开发者

Can I assign a just inserted ManagedObject to self?

I have the following factory method. I'm just wondering if the assignment

self = [NSEntityDescription insertNewObjectForEntityForName:entityName 
inManagedObjectContext:[self managedObjectContext]];

is correct, given the fact that my class is a subclass of NSManagedObject

thanks

+ (CBItem *)insertEntityForName:(NSString*)entityName fromXMLElement:(NSXMLElement*)xmlElement with开发者_开发问答QueryType:(CBSearchQueryType)queryType inContext:(NSManagedObjectContext *)inContext

...

self = [NSEntityDescription insertNewObjectForEntityForName:entityName 
inManagedObjectContext:[self managedObjectContext]];

... 

return self;


No, this is not correct. You only assign to self inside an init method. For a factory type method, you should be returning a variable, e.g.

CBItem* newItem = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:[self managedObjectContext]];

//Other stuff

return newItem;


self in a class method (declared with + instead of -) refers to the class object. Though, once within any method, self is like a local variable. You can reassign it to anything you want, as long as you don't expect it to continue to act like self is normally supposed to. So what you were doing will not be broken, though it is potentially confusing.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜