2

为了提高代码的可读性,我一直在为我的实体生成 Core Data 类,这样我就可以使用 getter 和 setter(我个人使用点符号)而不是setValue: forKey:

例如,[aDateObject setValue:nameString forKey:@"name"];
我将使用:aDateObject.name = nameString;


我想知道是否有一种等效的方法可以将新的托管对象插入到托管对象上下文中。例如,我目前DateTimeFlightDataType使用以下内容创建一个新的:

    aDateObject = (DateTimeFlightDataType*)[NSEntityDescription insertNewObjectForEntityForName:@"DateTimeFlightDataType"
                                                                         inManagedObjectContext:self.managedObjectContext];

DateTimeFlightDataType有没有办法使用我的类( )而不是实体字符串名称来创建这个对象并将其插入到上下文中以保持一致性?

4

2 回答 2

6

你可以写:

NSString *name = NSStringFromClass([DateTimeFlightDataType class]);
NSManagedObjectContext *ctx = self.managedObjectContext;
aDateObject = [NSEntityDescription insertNewObjectForEntityForName:name 
                                            inManagedObjectContext:ctx];
于 2013-01-06T12:20:45.117 回答
1

创建 MO 始终需要一个实体,并且这些实体始终由字符串定义。

常见的方法是以某种方式使其不需要硬编码,但可以从 MO 的类中派生出来。通常使用NSStringFromClass

于 2013-01-06T11:07:10.887 回答