【发布时间】:2016-01-22 17:29:39
【问题描述】:
步骤:
首先,我在.xcdatamodelId 中添加一个名为Employee 的实体,然后单击-> 产品-> 创建的NSManageObject 子类。
在第一步之后,我得到了Employee.h/.m,其中的超类是NSManageObject 和Employee+CoreDataProperties.h/.m。
然后我想将员工的信息保存到 Core Data,如下Employee.m:
+ (void)saveModelWithName:(NSString *)name startTime:(NSDate *)startTime birth:(NSDate *)birth {
Employee *employee = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:[[CoreDataManager sharedInstance] managedObjectContext]];
if (name) {
employee.name = name;
employee.startDate = startTime;
employee.birth = birth;
}
NSError *error = nil;
if (![[[CoreDataManager sharedInstance] managedObjectContext] save:&error]) {
NSAssert(NO, @"Error saving context:%@\n%@",[error localizedDescription],[error userInfo]);
}
}
数据插入成功。而且我认为Employee 与自定义类相同,所以
我想使用这个类将数据保存在内存中 并尝试像初始化Employee 一样
Employee *Sam = [[Employee alloc] init];
CoreData: error: Failed to call designated initializer on NSManagedObject class 'Employee'
我发现 NSManageObject 的文档说:
一个 NSEntityDescription 对象描述了 Core Data 中的一个实体。实体之于被管理的对象,就如同 Class 之于 id,或者——使用数据库类比——表之于行。实例指定实体的名称、属性(其属性和关系,由 NSAttributeDescription 和 NSRelationshipDescription 的实例表示)以及表示它的类。
我似乎无法使用 NSManageObject 类将模型保存在内存中。
我是否必须自定义一个与 Employee 子类 NSObject 具有相同属性的类?
请给我一些建议。
【问题讨论】:
标签: objective-c core-data