Я пытаюсь создать временный контекст управляемого объекта, и после нескольких экранов, когда пользователь вводит информацию, я объединяю этот контекст с основным контекстом (, чтобы гарантировать отсутствие вставленных «неполных» объектов ). Вот как я создаю свой временный контекст и как вставляю в него объект:
if (!self.someManagedObject) {
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:@[[NSBundle mainBundle]]];
NSPersistentStoreCoordinator *storeCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
[storeCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:nil];
NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator:storeCoordinator];
self.someManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SomeObject" inManagedObjectContext:managedObjectContext];
NSLog(@"%@", self.someManagedObject.managedObjectContext);
}
Это часть viewDidLoad
. В консоли видно, что контекст управляемого объекта имеет значение.
Однако сразу после этого if утверждение (даже внутри viewDidLoad
, self.someManagedObject.managedObjectContext
равно нулю. Я понимаю, почему локальная переменная больше не будет доступна (, она просто выходит за рамки ), но свойство управляемого объекта все равно должно быть установлено, верно?
Я знаю, что могу создать свойство для хранения контекста управляемого объекта, но лучше заставить его работать таким образом.