我是core data
的新手,我正试图了解如何使用NSManagedObjects
。基本上我有几个我打算用core data
存储的对象(彼此之间有关系)。
在查看核心数据之前,我编写了一个由3 NSObjects
组成的基本模型,现在我创建了一个core data model
并从此模型中生成了3 NSManagedObjects
。我在现有的3 NSObjects
中有一些逻辑(例如指定的初始化器和专门的getter和setter),我仍然想要使用它。
我的问题是,我是否可以将逻辑从3 NSObjects
直接转移到3 NSManagedObjects
,然后像我在原始设计中那样使用它们(还有额外的好处,可以轻松坚持他们),或者我是否需要同时保留NSObjects
和NSManagedObject
。
请有人就最佳设计方法提出建议,我希望尽可能保持我的代码干净整洁。
提前致谢!
答案 0 :(得分:8)
由于NSManagedObject
继承自NSObject
,如果您只是将自定义类的超类从NSObject
更改为NSManagedObject
,则不会失去功能 - 前提是您不要没有与NSManagedObject
冲突的方法/属性名称。这样您就不必保留orignal类,使代码更清晰,逻辑更简单。
答案 1 :(得分:6)
当我必须为NSManagedObject添加额外的功能时,我创建类别并将其保存在单独的文件中,因为当我修改.xcdatamodeld文件时,我通常会覆盖NSManagedObject子类,而不是手动更新更新的文件。
优惠+ Localized.h:
#import "Offer.h"
@interface Offer (Localized)
- (NSString *) localizedPrice;
@end
优惠+ Localized.m:
@implementation Offer (Localized)
- (NSString *) localizedPrice;
{
if ( self.price > 0 ) {
return [NSString stringWithFormat:NSLocalizedString(@"Price: %d", nil), self.price];
} else {
return NSLocalizedString(@"Free", nil);
}
}
@end