如何为init
子类编写自定义NSManagedObject
代码?我想要像initItemWithName:Volume:
这样的东西。其中Item
是NSManagedObject
子类,其中包含两个属性name
和volume
。
答案 0 :(得分:6)
卡洛斯,
正如 Nenad Mihajlovic 建议您可以为此创建一个类别。
因此,例如,如果您有一个Item
类,则可以创建一个名为Item+Management
的类别,并将创建代码放在那里。在这里你可以找到一个简单的例子。
// .h
@interface Item (Management)
+ (Item*)itemWithName:(NSString *)theName volume:(NSNumber*)theVolume inManagedObjectContext:(NSManagedObjectContext *)context;
@end
// .m
+ (Item*)itemWithName:(NSString *)theName volume:(NSNumber*)theVolume inManagedObjectContext:(NSManagedObjectContext *)context
{
Item* item = (Item*)[NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:context];
theItem.name = theName;
theItem.volume = theVolume;
return item;
}
如果要创建新项目,请执行
之类的导入#import "Item+Management.h"
并像这样使用
Item* item = [Item itemWithName:@"test" volume:[NSNumber numberWithInt:10] inManagedObjectContext:yourContext];
// do what you want with item...
这种方法非常灵活,在应用程序开发过程中非常容易维护。
您可以在Stanford Course Lecture 14代码示例中找到更多信息。此外,请参阅Stanford在iTunes上的免费视频(如果您有Apple ID)。
希望有所帮助。
P.S。为简单起见,我认为name
是NSString
而volume
是NSNumber
。对于volume
,最好使用NSDecimalNumber
类型。