我有一个使用核心数据的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子类?
答案 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时,我会保留这些方法。