У меня есть стек Core Data, основанный на магазине NSInMemoryStoreType
. И я заметил, что удаление объектов на самом деле не удаляет их или не делает их ноль, а скорее просто превращает их в ошибки.Удаление объектов Core Data из хранилища в памяти приводит к их ошибкам, но не удаляет их
Например, (MyManagedObjectEntityClass, а также> идентификатор < заполнители):
MyManagedObjectEntityClass *o = [NSEntityDescription insertNewObjectForEntityForName:@"<MyManagedObjectEntityClass Entity Name>" inManagedObjectContext:self.localContext];
NSLog(@"\n%@", o);
[self.localContext deleteObject:o];
NSLog(@"\n%@", o);
зарегистрирует, что объект все еще существует только то, что это данные неисправности.
И добавление [self.localContext save:nil];
после удаления также не изменяет это.
Я надеялся, что смогу в какой-то момент проверить переменную o
на nil
, и в этом случае я бы перезарядил объект - но, похоже, я не могу.
На всякий случай, да, я знаю, что смогу вместо этого проверить o
на -isFault
. Но дело в том, что экстраполируйте этот тест на NSSet, и я не могу просто полагаться на [[set anyObject] isFault]
, чтобы сделать вывод о том, что все объекты в этом наборе были удалены (в идеале счетчик набора будет 0, но все объекты по-прежнему существуют как сбои).
Так что мне интересно, возможно ли это вообще или какой альтернативный подход я могу принять, чтобы проверить, что объекты были удалены способом, прозрачным для того, что они управляются объектами.
Вы пробовали тестирование с помощью '[o isDeleted]'? –
Вещь - это то, что ставит меня в ту же лодку, что и isFault. Сами объекты удаляются из контекста. Если я сделаю запрос выборки после удаления, контекст не возвращает совпадений.Проблема в том, что любые ссылки на объекты, хранящиеся в клиентском коде (NSArray в контроллере представления, например, содержащий кучу управляемых объектов) по-прежнему находятся в коллекции после удаления, и хотя они являются ошибками, они все еще являются объектами, если Я тестирую ноль или проверяю счет коллекции. – SaldaVonSchwartz
Возможно, способ, которым я пытаюсь использовать управляемые объекты, выходит за рамки основных данных. Я думал, может быть, написав категорию или подклассифицируя коллекции, чтобы они знали об управляемых объектах, но это может быть очень неэффективно. – SaldaVonSchwartz