1

我在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但我不明白這是什麼意思。

所以,我的問題是:是否有可能實現類似的目標?如果是的話,你有什麼建議嗎?

注意

很顯然,我可以遍歷設定目的地,但我不知道是否可能是一個昂貴的迭代和多少記錄有。

回答

3

對於那些有興趣

你需要說使用您的讀取請求預取的關係

- (void)setRelationshipKeyPathsForPrefetching:(NSArray *)keys 

例如:

[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects: @"destinations", nil]]; 

在這個人核心數據預取您指定的關係並且不會觸發故障。

此外,您可以通過限制其限制的結果數爲您的讀取請求:

- (void)setFetchLimit:(NSUInteger)limit 

希望它能幫助。

-1

這是在提取中檢索特定值的另一種方法。也許這可以幫助(查找鏈接名稱的文件):

Fetching Specific Values

相關問題