谓词问题

时间:2014-04-04 15:02:43

标签: ios objective-c nspredicate

我有一个带有journalHeaderID字段的托管对象。我可以通过NSLog看到这些项目正确地放入Core Data。要显示我需要根据与视图相关的内容进行过滤的数据。

因此,当我配置我对此数据的视图时,我创建了一组相关的ID。但是,当我运行代码时,即使我知道它们在那里也没有结果。

我认为这个谓词是正确使用的,但它不能正常工作,我不确定原因。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"journalHeaderID IN %@", idsToList];

这是数组,因为它传入谓词,我已经尝试过它作为NSNumber和NSString。

<__NSArrayM 0xa01af70>(
  800555,
  800552,
  800685,
  803592,
  803593
)


NSFetchRequest *request = [NSFetchRequest new];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"JournalHeader" inManagedObjectContext:[[BWCoreDataHelper sharedInstance] managedObjectContext]];
[request setEntity:entity];
[request setFetchBatchSize:20];

if( idsToList.count > 0 ) {
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"journalHeaderID IN %@", idsToList];
    [request setPredicate:predicate];
}

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"headerCreateDate" ascending:NO];
[request setSortDescriptors:@[sort]];

NSFetchedResultsController *fetchedResults = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:[[BWCoreDataHelper sharedInstance] managedObjectContext] sectionNameKeyPath:nil cacheName:nil];

self.fetchedResultsController = fetchedResults;
self.fetchedResultsController.delegate = self;

1 个答案:

答案 0 :(得分:0)

由于缺乏有关您获得的结果的信息,或者即使您收到了代表留言,我也有一个建议。

使用您创建的提取功能在- (void)performFetch:(NSFetchRequest *)fetch上致电NSFetchedResultsController

如果你已经这样做了,那就不明显了。