ios - 从 'NSManagedObject Subclass*' 分配给 'NSEntityDescription *' 的不兼容指针类型

标签 ios objective-c core-data nsentitydescription

我正在保存托管对象上下文,并使用以下方法进行保存:

trainingDayObject = [NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context];

它有效,一切看起来都很好,但我收到警告:

Incompatible pointer types assigning to 'VitTrainingDay *' from 'NSEntityDescription *'

VitTrainingDay 是核心数据实体 TrainingDay 的 NSManagedObject 子类。 trainingDayObjectVitTrainingDay

的实例

我已经尝试阅读有关 NSEntityDescription 的文档,但由于我正在分配给一个实体,所以我对问题所在感到困惑。

我对核心数据和 Objective-C 还很陌生,如果这真的很明显,请原谅我。这几天一直困扰着我。

最佳答案

当你这样做时:

[NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context];

您得到的是 NSEntityDescription 的一个实例。这是一个对象,相当于您在 Xcode 的核心数据模型编辑器中配置的实体类型。它表示一个实体类型,而不是该实体的一个实例。

从错误消息看来,trainingDayObject 被声明为 VitTrainingDay *,这是一个指向托管对象实例的指针。

这里的区别与类和类的实例的区别完全一样。这就像你试图将 NSString 类分配给应该是字符串的特定实例的东西。

你真正想要的是这样的

trainingDayObject = [NSEntityDescription insertNewObjectForEntityForName:@"trainingDay" inManagedObjectContext:self.context];

因为这个方法创建了一个实体类型的新实例,而不是仅仅给你实体类型对象本身。

关于ios - 从 'NSManagedObject Subclass*' 分配给 'NSEntityDescription *' 的不兼容指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616676/

相关文章:

ios - 从设备照片库中获取图像的内存警告

ios - Console.error : no permission handler detected.( react native )

ios - UISearchBar 不更改 iOS 12.1 的搜索图标和占位符颜色

ios - 当 AlertController 出现时,UICollectionViewFlowLayout 错误

ios - 核心数据复杂的countForFetchRequest

ios - 获取 uitextview 的字体粗细

objective-c - 如何在 Snow Leopard 中编写 Finder 插件

c# - 如何在 iOS 上的 Unity3d 中获取 "free"内存量?

ios - 将核心数据与服务器响应同步

iphone - NSManagedObject 子类化