创建未保存到持久性存储的Core Data模型对象

时间:2012-11-09 17:24:24

标签: iphone objective-c ios core-data nsmanagedobject

我有一个使用核心数据的iOS应用程序。 我已经建立了NSManagedObjectModel。我在那里有一个NEOrder实体。 我已经生成了NSManagedObject子类。

@interface NEOrder : NSManagedObject

@property //....

@end

我有一个UIViewController的子类。这需要具有NEOrder类型的实例变量。 但我希望它的行为像一个常见的自定义对象:

@interface NEOrder : NSObject

@property //....

@end

当然可以通过创建另一个.h和.m文件来完成,其中包含NEOrder_子类化NSObject的声明。但是这个文件非常类似于核心数据生成的NSObjectModels,除了@ synthesize / @ dynamic和init方法。 我不想两次做这项工作。 请帮帮我,怎么办呢?

如果我将init添加到生成的NEOrder应用程序中会崩溃:

-(id)init
{
    if (self=[super init])
    {
        self.name=[[NSString alloc] init];
        self.phone=[[NSString alloc] init];
        self.weight=[[NSNumber alloc] init];
        self.fromDirection=[[NEDirection alloc] init];
        self.toDirection=[[NEDirection alloc] init];
    }
    return self;
}

关于我如何使用它的另外几句话。

//NEOrder *order is an instance of view controller
self.order=[NEOrder alloc] init]
//...
self.order.name=@"order name";
self.order.phone=@"12344321";

有可能吗?或者我必须为它创建一个单独的NSObject子类?

3 个答案:

答案 0 :(得分:2)

你问题的一部分没有意义:

  

我希望它的行为像普通的自定义对象。

你是什么意思?

你的问题的其余部分表明你需要一个NEOrder类,你应该像这样设置你的视图控制器:

<强> MyViewController.h:

@class NEOrder;

@interface MyViewController : UIViewController

@property (strong) NEOrder *order;

@end

<强> MyViewController.m:

#include "NEOrder.h"

@implementation MyViewController

...

@end

答案 1 :(得分:1)

所有类都继承自NSObject,因此NSManagedObject也从NSObject继承。这意味着您的NEOrder对象将具有NSObject的所有特征。

答案 2 :(得分:1)

使用Category。类别可用于为实际类之外的类编写方法。我将它们与Core Data模型一起使用,因此当我因任何原因需要重新生成NSManagedObjectModel时,我会保留这些方法。