2013-03-17 42 views
0

如何使用NSFetchResultsController獲取不同的值?具有不同值的NSFetchResultsController

例如核心數據實體具有2個屬性名稱,年齡的人員。

在NSFetchResultsController中搜索獨特的年齡,返回每個獨特年齡的名稱和年齡?

+0

您是否需要提取結果控制器來顯示錶視圖?如果年齡不同,應該顯示什麼? – 2013-03-17 21:17:59

+0

我有5個視圖控制器,都需要來自核心數據的數據,但具有不同的標準。一個只需要2個屬性,例如所有獨特的年齡,返回年齡和名字。一個需要按名稱排序的所有條目,另一個需要特定屬性的所有唯一值。通過獲取反序列化的託管對象ID,最後2個按正確順序保存值。除了具有滾動視圖的桌面以外,它們都是桌面視圖。 – jarryd 2013-03-17 21:34:13

+0

但是,如果一個獨特年齡的名稱超過1個,您想要顯示哪一個? – 2013-03-17 21:36:46

回答

1

從您的最後評論我假設你想要獲取所有年齡和名稱(或系列標題和工作室)的獨特組合。這可以通過以下獲取請求完成:

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; 
[fetchRequest setResultType:NSDictionaryResultType]; 
[fetchRequest setPropertiesToFetch:@[@"name", @"age"]]; 
[fetchRequest setReturnsDistinctResults:YES]; 
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 

這給出了一個包含所有獨特年齡/名稱組合的字典數組。

但是有一個問題。如果您對提取的結果控制器使用此提取請求,則會喪失自動更改跟蹤功能(請參閱,例如https://stackoverflow.com/a/13550383/1187415以獲取解釋)。我不認爲有一種方法同時具備:自動更改跟蹤取回請求返回不同的結果。