上我有一個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