2012-12-05 163 views
0

我有一個核心數據模型有3個屬性,「singerName」,「albumName」,「songName」。 還有一個表格視圖來顯示歌手字符串和專輯字符串。具有相同屬性值的核心數據提取實體

例如,我使用邁克爾傑克遜來獲取核心數據。我有100個結果。但是可能只有10張專輯每張有10首歌曲。

我的問題是如何寫NSPredicate放棄不知道實際專輯名稱相同的專輯,只能取得10個不同的邁克爾傑克遜專輯。

request.predicate = [NSPredicate predicateWithFormat:@"singerName != %@ && ???", @""]; 我想改變?以某種格式丟棄重複的albumName。

+0

更多代碼請 – Janub

+0

實體叫什麼?你有建立關係嗎?使用正確設計的模型應該很容易實現。 – ChrisH

回答

0

嘗試以下方法:

NSArray *uniqueAlbums = [results valueForKeyPath:@"@distinctUnionOfObjects.albumName"]; 

其中結果是當前fetchedObjects陣列。

+0

感謝您的提示。出於性能原因,我使用NSDictionaryResultType作爲獲取請求。所以我沒有fetchedObjects數組。我可以使用某種NSPredicate設置來執行第一次獲取嗎? – realsnake

+0

我給這個問題添加了一些代碼,請看看。 – realsnake

+0

據我所知,只能設置NSPredicate才能完成。你也可以嘗試request.returnsDistinctResults = YES; –

0

NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Countries" inManagedObjectContext:appDelegate.managedObjectContext]; 
[fetchRequest setEntity:entity]; 


NSPredicate *objPredicate = [NSPredicate predicateWithFormat:@"cname == %@",objCountries]; 

[fetchRequest setPredicate:objPredicate]; 
相關問題