私のすべてのオブジェクトのプロパティの一意の値のリストを取得しようとしています([array valueForKeyPath:@"@distinctUnionOfObjects.key"]
と似ていますが、私はそれを作成することでこれを達成できるはずですNSDictionaryResultType
からresultType
セット、propertiesToFetch
を指定しYES
からreturnsDistinctResults
を設定する。これが機能していないよう行うとNSFetchRequest
。NSFetchRequest "returnsDistinctResults"は無視されているようです
私はエンティティを作成しているが、3つの属性firstName
、lastName
とage
でPerson
と呼ばれる。ここでは、コードがあります私はこれをテストしようとしています:
NSManagedObjectModel *objectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:objectModel];
[coordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:nil];
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
context.persistentStoreCoordinator = coordinator;
[context performBlockAndWait:^{
NSArray *lastNames = @[@"Smith",@"Johnson"];
NSArray *firstNames = @[@"John", @"Susan"];
for (NSString *lastName in lastNames) {
for (NSString *firstName in firstNames) {
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
person.firstName = firstName;
person.lastName = lastName;
person.age = @(18);
}
}
}];
[context save:nil];
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
fetchRequest.resultType = NSDictionaryResultType;
fetchRequest.propertiesToFetch = @[@"age"];
fetchRequest.returnsDistinctResults = YES;
NSArray *results = [context executeFetchRequest:fetchRequest error:nil];
NSLog(@"%@",results.description);
私はこれを実行すると、これは私が手ログです:@[@"lastName"]
にpropertiesToFetch
を変更
2017-10-12 16:17:54.723 TestCoreData[10650:879197] (
{
age = 18;
},
{
age = 18;
},
{
age = 18;
},
{
age = 18;
}
)
でも同様の結果が得られます。
2017-10-12 16:32:45.143 TestCoreData[10800:929908] (
{
lastName = Smith;
},
{
lastName = Johnson;
},
{
lastName = Johnson;
},
{
lastName = Smith;
}
)
私の予想では、これらだけ戻ってくるということでしょうage
の単一エントリとlastName
の2つです。
のreturnsDistinctResults
を誤解していますか、または間違って使用していますか?
メモリストアを使用した結果かどうかは疑問です。あなたはSQLストア型で試しましたか? – pbasdf
@pbasdfええこれを投稿して試してみたのと同じことを考えていて、それが問題のようでした。入力いただきありがとうございます。 –