我可以像处理常规NSObject一样处理NSManagedObject吗?
问题描述:
我是core data
的新手,我试着让我的脑袋围绕如何使用NSManagedObjects
。基本上我有几个对象,我打算使用core data
(它们之间有相互关系)进行存储。我可以像处理常规NSObject一样处理NSManagedObject吗?
之前寻找到核心数据我写了由3 NSObjects
一个基本模型,我现在已经创建了一个core data model
从这个模型生成3 NSManagedObjects
。我在我现有的3 NSObjects
(例如指定的初始化程序和专门的getter和setter)中有一些逻辑,我仍然想使用它。
我的问题是,是否我可以从3 NSObjects
直接传输逻辑到3 NSManagedObjects
然后在我原来的设计中使用它们,因为我会(具有能够很容易地坚持他们额外的奖励),还是我需要保留NSObjects
以及NSManagedObject
。
请有人建议最佳的设计实践,我想保持我的代码尽可能干净和结构良好。
在此先感谢!
答
由于NSManagedObject
从NSObject
继承,你这样做,如果你只是你的自定义类的超从NSObject
到NSManagedObject
改变不松动的功能 - 只要你没有那个与的NSManagedObject
碰撞方法/属性名称。这样你就不必保持原有的类,使代码更清晰,逻辑更简单。
答
当我必须为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