我可以像处理常规NSObject一样处理NSManagedObject吗?

The*_*imp 3 core-data objective-c nsobject nsmanagedobject ios

我是新手core data,我正试图让我的头脑如何利用NSManagedObjects.基本上我有几个我打算使用的对象core data(彼此之间有关系).

在查看核心数据之前,我写了一个由3组成的基本模型NSObjects,现在我已经从这个模型创建了一个core data model并生成了3个NSManagedObjects.我在现有的3中有一些逻辑NSObjects(例如指定的初始化器和专门的getter和setter),我仍然想要使用它.

我的问题是,是否我可以从3转移逻辑NSObjects直接到3 NSManagedObjects,然后使用它们,因为我会在我的原始设计(同额外的好处是能够很容易地坚持他们),或者我是否需要同时保留NSObjects为以及NSManagedObject.

请有人就最佳设计实践提出建议,我希望尽可能保持我的代码清洁和结构良好.

提前致谢!

小智 8

如果您只是将自定义类的超类更改为- ,只要您没有与之相冲突的方法/属性名称,那么从NSManagedObject继承之后NSObject就不会失去功能.这样您就不必保留orignal类,使代码更清晰,逻辑更简单.NSObjectNSManagedObjectNSManagedObject


And*_*iev 6

当我必须为NSManagedObject添加额外的功能时,我创建类别并将其保存在单独的文件中,因为当我修改.xcdatamodeld文件时,我通常会覆盖NSManagedObject子类,而不是手动更新更新的文件.

优惠+ Localized.h:

#import "Offer.h"
@interface Offer (Localized)
- (NSString *) localizedPrice;
@end
Run Code Online (Sandbox Code Playgroud)

优惠+ 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
Run Code Online (Sandbox Code Playgroud)