我有一个名为Geometry
的实体,它与Plot
实体有关。在我们的一段代码中,给定Plot
和一些下载的数据存储在NSDictionary
中,我们必须得到Geometry
并设置一些NSString
属性,但是在这样做后,我发现实体之间的关系丢失了。编辑嵌套对象后,核心数据关系丢失
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);
}
我第一次运行该代码results
有一个对象,但下一次我运行这个没有results
。
假设这段代码的范围之外的所有内容都正常工作。任何暗示或线索为什么发生这种情况?我该如何解决这个问题?
编辑:该问题已被解决超出了代码范围,并且超出了本问题的范围。我应该进一步正确地审查代码。
为什么要枚举结果而不是修改谓词以首先返回单个'Geometry'对象? – Avi
@Avi如果有多个结果,它们将在此代码的范围之外进行处理。 – JordiVilaplana