2016-11-21 7 views
0

私は、次のコードを使用してコアデータから特定のプロパティを取得しようとしています:のXcode 8.1コアデータ

NSFetchRequest *test = [[NSFetchRequest alloc] init]; 
test.entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:self.currentMainContext]; 
test.predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; 
test.resultType = NSDictionaryResultType; 
test.returnsDistinctResults = YES; 
test.propertiesToFetch = @[@"property"]; 

NSArray *results = [self.currentMainContext executeFetchRequest:test error:error]; 

が、私は空の配列を取り戻します。

私がtest.resultType = NSDictionaryResultType;をコメントアウトすると、データベースのすべてのエンティティの配列が正常に返されます。 NSDictionaryResultTypeについては間違っていますか?

答えて

1

resultTypeのフェッチ要求はNSDictionaryResultTypeの1つの特徴があります。 includesPendingChangesため
Documentationと述べている:値がNOの場合は、フェッチ要求が保存されていない変更をチェックして、唯一の永続ストアで述語に一致するオブジェクトを返していない

YESの値は、集計結果の計算(maxおよびminなど)を含む結果タイプNSDictionaryResultTypeと組み合わせてサポートされていません。ディクショナリの場合、フェッチから返された配列は永続ストア内の現在の状態を反映し、コンテキスト内の保留中の変更、挿入、または削除を考慮しません。

変更を保存したか、NSManagedObjectResultTypeを使用してください。

関連する問題