如何init
为NSManagedObject
子类编写自定义代码?例如,我想要类似的东西initItemWithName:Volume:
。whereItem
是NSManagedObject
具有两个属性的子类,name
而volume
.
问问题
5103 次
1 回答
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...
这种方法在应用程序开发过程中非常灵活且易于维护。
您可以在斯坦福课程讲座 14代码示例中找到更多信息。此外,还可以查看 Stanford 的 iTunes 上的免费视频(如果您有 Apple ID)。
希望有帮助。
PS 为了简单起见,我想name
是 aNSString
并且volume
是 a NSNumber
。因为volume
使用NSDecimalNumber
类型可能会更好。
于 2012-08-29T14:47:31.623 回答