我似乎得到一个我无法理解的错误。希望这不会太混乱和长期,但因为我似乎无法在我的搜索中找到任何答案,所以我认为这可能是必要的。在我的计划,我有几个实体:CoreData/RegEx错误:无法从对象创建正则表达式
ItemSold 发票 客户
Customer
的可以有很多Invoices
,Invoices
可以有很多ItemSolds
。
在我的界面生成器中,我有三个表格。一张表代表客户,另一张代表发票,最后一张代表发票中的itemsold。 因此,当您选择一位客户时,他们的发票将显示在发票表中。一旦您点击发票,该发票上的项目就会出现在最后一个表格中。
我在桌子上选择时似乎会出错。有趣的是,在另一种观点中,我可以做到这一点(当我试图根据它们与类型的关系对项目进行排序时)。但是我无法在这里工作。这是我取来获取应存放的物品:
if (managedObjectContext == nil)
{
managedObjectContext = [(HistoryController *)[[NSApplication sharedApplication] delegate] managedObjectContext];
}
NSError *error = nil;
// fetch all customers
NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] init];
NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"Customer"
inManagedObjectContext:managedObjectContext];
[fetchRequest2 setEntity:entity2];
fetchedCustomers = [managedObjectContext executeFetchRequest:fetchRequest2 error:&error];
if (fetchedCustomers == nil) {
NSLog(@"ERROR");
}
[fetchRequest2 release];
// end of customer fetch
// fetch all invoices
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Invoice"
inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSLog(@"A");
if ([customerTable selectedRow] >= 0)
{
NSLog(@"B");
int index = (int)[customerTable selectedRow];
NSLog(@"%@", index);
NSString *customerString = [[fetchedCustomers objectAtIndex:(index)] valueForKey:@"CustomerNumber"];
NSNumber *customerNumber = [NSNumber numberWithInt:([customerString intValue])];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"customer.CustomerNumber like %@", customerNumber];
[fetchRequest setPredicate:predicate];
}
fetchedInvoices = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedInvoices == nil) {
NSLog(@"ERROR");
}
[fetchRequest release];
// end of invoice fetch
// fetch specific invoice
NSFetchRequest *fetchRequest3 = [[NSFetchRequest alloc] init];
NSEntityDescription *entity3 = [NSEntityDescription entityForName:@"ItemSold"
inManagedObjectContext:managedObjectContext];
[fetchRequest3 setEntity:entity3];
if ([invoicesListTable selectedRow] >= 0)
{
NSLog(@"C");
int index = (int)[invoicesListTable selectedRow];
NSLog(@"%i", (int)[invoicesListTable selectedRow]);
NSLog(@"%i", index);
NSString *invoiceString = [[fetchedInvoices objectAtIndex:(index)]
valueForKey:@"InvoiceNumber"];
NSNumber *invoiceNumber = [NSNumber numberWithInt:([invoiceString intValue])];
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"invoice.InvoiceNumber like %@", invoiceNumber];
[fetchRequest3 setPredicate:predicate3];
}
NSLog(@"D");
fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest3 error:&error];
if (fetchedObjects == nil)
{
NSLog(@"ERROR");
}
[fetchRequest3 release];
[invoiceTable reloadData];
NSLog(@"D2");
}
如果我执行,并点击一排,这是我得到:
2012-02-13 16:42:35.326 InventoryProgram[7056:707] A
2012-02-13 16:42:35.327 InventoryProgram[7056:707] C
2012-02-13 16:42:35.327 InventoryProgram[7056:707] 0
2012-02-13 16:42:35.328 InventoryProgram[7056:707] 0
2012-02-13 16:42:35.328 InventoryProgram[7056:707] D
2012-02-13 16:42:35.329 InventoryProgram[7056:707] Can't create a regex expression from object 2.
我展示字母的输出,是想说明,其中控制如下。随着我选择一行,输出正确的行号(0),并且实际上使它经过了我认为是问题的地方。输出字母D,它通过NSPredicate区域,这正是我认为正则表达式问题的来源。我假设它现在到达executeFetchRequest,并遇到分配给它的NSPredicate的问题。
有没有人有任何想法/任何东西在这里指向我在正确的方向?我无法将自己的思想包围在问题所在之处。我真的希望这里没有太多的代码,我只是想给我所有的信息。