5

如何initNSManagedObject子类编写自定义代码?例如,我想要类似的东西initItemWithName:Volume:。whereItemNSManagedObject具有两个属性的子类,namevolume.

4

1 回答 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 回答