【发布时间】:2012-06-20 14:14:20
【问题描述】:
首先让我确定我有 X-Code 4.3.2 版本和 iOS 5.1 SDK。我的项目中有以下用于核心数据操作的方法。两种方法都给出相同的警告。即“从结果类型为'NSManagedObject
方法一:
- (NSManagedObject<Protocol> *)newMOforNilMOC
{
return [[NSManagedObject alloc] initWithEntity:[self entityDescription] insertIntoManagedObjectContext:nil];
}
对于方法 method A 我只是进行类型转换并添加 (NSManagedObject
- (NSManagedObject<Protocol> *)newMOforNilMOC
{
return (NSManagedObject<Protocol> *) [[NSManagedObject alloc] initWithEntity:[self entityDescription] insertIntoManagedObjectContext:nil];
}
方法B:
+ (NSManagedObject<Protocol> *) newInContext:(NSManagedObjectContext *)context
{
return [[NSEntityDescription insertNewObjectForEntityForName:[[(NSManagedObject<Protocol> *)self class] entityName] inManagedObjectContext:context]retain];
}
对于 method B,当我进行类型转换时它不起作用,因此我只需将方法的名称从 newInContext 更改为 AddnewInContext(在 google 搜索时在某处找到)然后删除警告。
我有以下问题:
- 如果需要第一种方法进行类型转换,那么为什么第二种方法不适用于该解决方案?
- 更改方法名称的确切含义是什么。这是删除上述警告的正确方法吗?为什么类型转换不起作用 方法 B?
这可能很复杂,但如果您有任何疑问,请随时发表评论。因为我想知道区别,所以至少我可以学习一些关于核心数据的新东西。
【问题讨论】:
-
AddnewInContext 在做什么?
-
它只是新的更名而已,或者它可以是别的东西。正如我上面提到的,我只是更改了方法的名称。
标签: iphone objective-c core-data ios5 nsmanagedobjectcontext