一時的な管理対象オブジェクト コンテキストを作成しようとしています。ユーザーが情報を入力する画面を数回表示した後、そのコンテキストをメイン コンテキストとマージします (「不完全な」オブジェクトが挿入されないようにするため)。これは、一時的なコンテキストを作成する方法と、それにオブジェクトを挿入する方法です。
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
nil です。ローカル変数が使用できなくなる理由はわかります (単純にスコープ外になります)。ただし、管理対象オブジェクトのプロパティは引き続き設定する必要があります。
管理対象オブジェクトのコンテキストを格納するプロパティを作成できることはわかっていますが、この方法で機能させたいと考えています。