Ich habe eine Entität mit dem Namen Geometry
, die mit einer Plot
Einheit verbunden ist. In unserem Stück Code, vorausgesetzt, die Plot
und einige heruntergeladene Daten in einem NSDictionary
gespeichert, müssen wir die Geometry
und setzen einige NSString
Eigenschaften, aber nachdem ich das getan habe, finde ich, dass die Beziehung zwischen Entitäten verloren ist.Kerndaten-Beziehung verloren nach Bearbeitung verschachteltes Objekt
NSError * saveError = nil;
NSFetchRequest * request = [[NSFetchRequest alloc] initWithEntityName:[Geometry entityName]];
request.predicate = [NSPredicate predicateWithFormat:@"plot == %@", plot];
NSError * error = nil;
NSArray * results = [context executeFetchRequest:request error:&error];
Geometry * __block geometry = nil;
if ([results count] > 0) {
[results enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * stop) {
Geometry * geometryObject = obj;
if ([geometryObject.gid isEqualToString:[NSString stringWithFormat:@"%@", [data valueForKey:@"gid"]]]) {
geometry = geometryObject;
stop = YES;
}
}];
}
if (geometry != nil) {
[geometry setPolygon:[NSString stringWithFormat:@"%@", [data valueForKey:@"polygon"]]];
}
if (![context save:&saveError]) {
NSLog(@"%@", saveError);
}
Das erste Mal, dass ich diesen Code ausführen results
haben ein Objekt, aber das nächste Mal, wenn ich diese laufen gibt es keine results
.
Gehen Sie davon aus, dass alles außerhalb des Geltungsbereichs dieses Codeelements richtig funktioniert. Irgendein Hinweis oder Anhaltspunkt darüber, warum dies geschieht? Wie kann ich das lösen?
BEARBEITEN: Das Problem wurde außerhalb des Bereichs des veröffentlichten Codes und außerhalb des Bereichs dieser Frage gelöst. Ich hätte den Code genauer überprüfen müssen.
Warum führen Sie die Ergebnisse durch, anstatt das Prädikat zu ändern, um das einzelne 'Geometry'-Objekt an erster Stelle zurückzugeben? – Avi
@Avi Wenn mehr als ein Ergebnis vorhanden ist, werden sie außerhalb des Bereichs dieses Codes verarbeitet. – JordiVilaplana