我想要使用我的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