2016-11-21 2 views
0

Holen Ich versuche, eine bestimmte Eigenschaft von Core Data mit dem folgenden Code zu holen:Xcode 8.1 Daten Kern spezifischen Eigenschaften

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]; 

aber ich bekomme ein leeres Array zurück.

Wenn ich auskommentieren test.resultType = NSDictionaryResultType; dann bekomme ich ein Array aller Entitäten in meiner Datenbank wie erwartet zurück. Was ist an der NSDictionaryResultType das ist falsch?

Antwort

1

Abrufanforderung mit resultType von NSDictionaryResultType hat eine Besonderheit.
Documentation für includesPendingChanges heißt es:

Wenn der Wert NEIN ist, die Abrufanforderung nicht gespeicherte Änderungen überprüfen und nur gibt Objekte, die das Prädikat in dem persistenten Speicher abgestimmt.

Der Wert YES wird nicht in Verbindung mit dem Ergebnistyp NSDictionaryResultType unterstützt, einschließlich der Berechnung von Aggregatergebnissen (z. B. max und min). Bei Wörterbüchern spiegelt das vom Abruf zurückgegebene Array den aktuellen Status im permanenten Speicher wider und berücksichtigt keine ausstehenden Änderungen, Einfügungen oder Löschungen im Kontext.

Stellen Sie sicher, dass Sie Ihre Änderungen gespeichert haben, oder verwenden Sie NSManagedObjectResultType.

Verwandte Themen