Objective c CoreData/RegEx错误:无法从对象创建RegEx表达式
我似乎犯了一个我不能真正理解的错误。希望这不会变得太混乱和冗长,但由于我在搜索中似乎找不到任何答案,我认为这可能是必要的。在我的程序中,我有几个实体: 物品出售 发票 顾客 客户可以有许多发票,发票可以有许多项目 在界面生成器中,我有三个表。一个表表示客户,另一个表表示发票,最后一个表表示该发票中的ItemSold。 因此,当您选择客户时,他们的发票将显示在发票表中。单击发票后,该发票上的项目将显示在最后一个表中 当我在一张桌子上选择时,我似乎遇到了错误。有趣的是,在另一个视图中,当我尝试根据项目与类型的关系对项目进行排序时,我可以做到这一点。但是我不能让它在这里工作。这是我获取应存储的项目的方法:Objective c CoreData/RegEx错误:无法从对象创建RegEx表达式,objective-c,core-data,nstableview,nspredicate,nsmanagedobjectcontext,Objective C,Core Data,Nstableview,Nspredicate,Nsmanagedobjectcontext,我似乎犯了一个我不能真正理解的错误。希望这不会变得太混乱和冗长,但由于我在搜索中似乎找不到任何答案,我认为这可能是必要的。在我的程序中,我有几个实体: 物品出售 发票 顾客 客户可以有许多发票,发票可以有许多项目 在界面生成器中,我有三个表。一个表表示客户,另一个表表示发票,最后一个表表示该发票中的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盘点计划[7056:707]A
2012-02-13 16:42:35.327盘点计划[7056:707]C
2012-02-13 16:42:35.327盘点计划[7056:707]0
2012-02-13 16:42:35.328盘点计划[7056:707]0
2012-02-13 16:42:35.328盘点计划[7056:707]D
2012-02-13 16:42:35.329清单程序[7056:707]无法从对象2创建正则表达式
我显示这些字母的输出只是为了显示控件跟随的位置。接下来,我选择一行,输出正确的行号0,事实上,我认为问题出在哪里。输出字母D,它通过NSPredicate区域,这就是我认为正则表达式问题的根源。我现在假设它到达executeFetchRequest,并遇到分配给它的NSPreditate的问题
有没有人有任何想法/任何东西可以为我指明正确的方向?我不知道问题出在哪里。我真的希望这里没有太多的代码,我只是想提供我能提供的所有信息。替换:
NSString *invoiceString = [[fetchedInvoices objectAtIndex:(index)]
valueForKey:@"InvoiceNumber"];
NSNumber *invoiceNumber = [NSNumber numberWithInt:([invoiceString intValue])];
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"invoice.InvoiceNumber like %@", invoiceNumber];
与:
解决了这个问题 替换:
NSString *invoiceString = [[fetchedInvoices objectAtIndex:(index)]
valueForKey:@"InvoiceNumber"];
NSNumber *invoiceNumber = [NSNumber numberWithInt:([invoiceString intValue])];
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"invoice.InvoiceNumber like %@", invoiceNumber];
与:
解决了这个问题