2013-03-06 90 views
0

如何通過請求要檢查的特定屬性來獲取一組唯一的託管對象。使用屬性獲取NSManagedObjects的集合

例如一些人的對象,我想檢索所有的唯一名稱,一個管理對象爲每個唯一的名稱,按名稱排序。

回答

3

怎麼樣使用請求這樣

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext]; 
request.entity = entity; 
request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"name"]]; 
request.returnsDistinctResults = YES; 
request.resultType = NSDictionaryResultType; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptors]]; 

NSError *error = nil; 
NSArray *distinctResults = [managedObjectContext executeFetchRequest:request error:&error]; 
// Use distinctResults 

嘗試,讓我知道。

P.S.代碼已啓用ARC。如果您不使用它,必要時請致電release

+0

@ Helium3另請參見http://stackoverflow.com/questions/2785844/how-to-fetch-distinct-values-in-core-data – 2013-03-06 21:41:53

+0

該返回是否將NSManagedObjects與關聯的數據讀取錯誤。例如。是否可以使用object.someProperty訪問NSManagedObject的其他屬性。另外,如何將propertiesToFetch應用於僅搜索與其他屬性匹配的對象中的屬性,例如年齡和性別。那麼,只爲特定年齡和性別的人提取獨特的名字? – jarryd 2013-03-06 22:06:23

+0

@ Helium3如果您想使用其他任何屬性,您必須將其添加到您在'propertiesToFetch'屬性中設置的數組中。 – 2013-03-06 22:17:04