我在stackoverflow中嘗試了很多解決方案,但我無法找到有效的解決方案。我有一個包含兩個實體的核心數據模型:客戶端和目標。兩者都被NSManagedObject
子類包裝。在一對多關係中使用NSPredicate進行篩選
客戶端有一些屬性和稱爲目的地的一對多關係。 目的地有一個名爲default_dest的屬性,該屬性由NSNumber
和稱爲客戶端的反向關係封裝。
我有一個UITableViewController
我在使用以下fetchedController
屬性。該請求運作良好。我能夠檢索存儲在SQLite中的客戶端。
if (fetchedResultsController)
return fetchedResultsController;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"code" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
fetchedResultsController.delegate = self;
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
我會再來一步。我現在將過濾從先前請求中檢索的目的地(包含在目的地NSSet
中),供每個客戶端使用。特別地,該目的地可以被添加僅當它的default_dest值爲1
要解決本說明書中我試圖添加一個NSPredicate
類似如下:
NSPredicate* predicate = [NSpredicate predicateWithFormat:@"ANY destinations.default_dest == %@", [NSNumber numberWithInt:1]];
然後我將其設置在fetchRequest爲:
[fetchRequest setPredicate:predicate];
每次運行請求時,它都會返回一個「to-many-relationship fault destinations ...」。這是什麼意思?我看過iphone-core-data-relationship-fault但我不明白這是什麼意思。
所以,我的問題是:是否有可能實現類似的目標?如果是的話,你有什麼建議嗎?
注意
很顯然,我可以遍歷設定目的地,但我不知道是否可能是一個昂貴的迭代和多少記錄有。