上我有一个1 coredata数据模型:N的关系NSPredicate:加入对象或对象ID
Entity Item
Tag *tag;
....
Entity Tag
NSString *name;
我想获取项目,女巫有标签的关系。 以下工作:
Tag *selectedTag = .....
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Item"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag.name = %@", selectedTag.name];
的问题是,有coud是具有相同名称的多个标签。 这些项目不应该被提取。
如何直接比较对象(selectedTag)或至少比较id。
两个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag == %@", selectedTag];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"[tag objectID] == %@", [selectedTag objectID] ];
不起作用。
谢谢
谢谢,但如何看起来NSPredicate这个“查询”?我不想获取标签,也不想导航关系。没有其他办法吗? – mica 2012-02-14 08:06:06
澄清:我想在TableView中使用NSFetchedResultsController。对于大量的项目来说,这不是更好,而不是整个内存? – mica 2012-02-14 08:32:41
您将使用fetchRequest初始化您的fetchedResultsController,以便在显示表之前填充表格。您不希望在该提取中请求特定的对象ID。如果你想一次只填充几个标签,你可以使用谓词,比如'tag.name ==%@'。请参阅FRC类别参考“修改提取请求”。一旦表开始运行并且用户选择了一个标记,就可以从表委托方法中获取选定的标记。在这一点上你不需要另一次获取。 – Wienke 2012-02-14 12:50:11