У меня есть объект с именем 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
.
Предположим, что все, что выходит за рамки этой части кода, работает правильно. Любой намек или подсказка о том, почему это происходит? Как я могу это решить?
EDIT: Проблема была решена за пределами размещенного кода и вне сферы действия этого вопроса. Я должен был должным образом пересмотреть код дальше.
Почему вы перечисляете результаты вместо того, чтобы изменять предикат, чтобы в первую очередь вернуть один объект «Геометрия»? – Avi
@Avi Если есть несколько результатов, они обрабатываются за пределами этого кода. – JordiVilaplana