我想要使用我的NSFetchedResult請求不同的結果。我試圖使用這裏發佈的答案:What class is returned when requesting distinct NSManagedObject property instances from Core-Data?使用NSMangedObjectID
爲了得到實際的NSManagedObject。這裏是NSFetchedResult
代碼:NSManagedObjectID返回一個字符串,同時請求不同的NSManagedObject
//Unique fetch request
NSFetchRequest *uniqueFetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"EntityName"];
[uniqueFetchRequest setPropertiesToFetch:@[@"name"]];
[uniqueFetchRequest setReturnsDistinctResults:YES];
[uniqueFetchRequest setResultType:NSDictionaryResultType];
[uniqueFetchRequest setPredicate:predicate];
[uniqueFetchRequest setSortDescriptors:sortDescriptors];
uniqueResults = [[NSArray alloc] initWithArray:[context executeFetchRequest:uniqueFetchRequest error:&error]];
NSManagedObjectID *mid = uniqueResults[0][@"name"];
EntityData *card = (EntityData *)[context objectWithID:mid];
然而,[uniqueResults[0][@"name"]
返回一個的NSString它發現,而不是像0x8b7b120 <x-coredata://C7E53293-94C7-444D-8162-167B1D66A961/Hair/p33>
的NSManagedObject的實際name
(這是在我發佈的鏈接返回)。因爲它現在是一個NSString,[context objectWithID:mid]
崩潰,並給我以下錯誤:[__NSCFString persistentStore]: unrecognized selector sent to instance 0xc47b170
我在做什麼錯在這裏?
基本上,我的實體有兩個屬性:name和releaseDate。可能有多個具有相同名稱的實體,但每個實體都有唯一的releaseDate。我試圖執行只會爲每個名稱返回一個實體的提取。例如:我有「道奇霓虹燈」 - 「12/2010」和「道奇霓虹燈」 - 「2011年1月」。我希望我的抓取只返回其中的一個。 (我已經通過releaseDate屬性對NSFetchRequest進行排序) – Nick
@Nick查看我的編輯 –
是什麼讓它變得不穩定?這種獲取對於交換紙牌遊戲非常有用。偶爾會重印相同的牌,因此當製作遊戲的牌組建者時,能夠僅顯示每個重印牌的一個副本以便在搜索牌時不會出現10同一張卡的版本。 – Nick