开发者

How can I associate an NSManagedObject to the context after it has been initialised?

开发者 https://www.devze.com 2023-02-21 21:32 出处:网络
For example, if I have an NSManagedObject named Items开发者_如何学运维, and I want to set the ManagedObjectContext later (not when initialised), how would I do that?

For example, if I have an NSManagedObject named Items开发者_如何学运维, and I want to set the ManagedObjectContext later (not when initialised), how would I do that?

At the moment I'm doing this:

Items *item = [NSEntityDescription insertNewObjectForEntityForName:@"Items" 
                                                inManagedObjectContext:_context];

That automatically associates it to _context.

But what if I want to do this:

Items *item = [[Items alloc] init];
item.first = @"bla";
item.second = @"bla bla";

And I would want to pass that object to another method which would then associate it with the context and save it.

So is there any way to just do a simple item.managedObjectContext = _context or something like that?


This approach would be perfectly valid...

Items *item = [[Item alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
item.first = @"blah";
item.second = @"blah blah";

You're then free to pass this object around to where its needed and when you're ready to commit it to a managed object context, simply insert it and save.

[managedObjectContext insertObject:item];
NSError *error = nil;
[managedObjectContext save:&error];


The standard init method for an NSManagedObject subclass is -initWithEntity:insertIntoManagedObjectContext:. If you don't provide a context, call:

[myManagedObjectContext insertObject:item];

...which is what the init method does internally. You'll still need to save the managedObjectContext as usual.

0

精彩评论

暂无评论...
验证码 换一张
取 消