我正在保存托管对象上下文,并使用以下内容来执行此操作:
trainingDayObject = [NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context];
它工作,一切看起来都很棒,但我收到了警告:
Incompatible pointer types assigning to 'VitTrainingDay *' from 'NSEntityDescription *'
VitTrainingDay
是Core Data实体TrainingDay的NSManagedObject子类 . trainingDayObject
是 VitTrainingDay
的一个实例
我试过阅读 NSEntityDescription
上的文档,但是因为我对问题是什么感到困惑 .
我对核心数据和Objective-C很陌生,所以如果这真的很明显,请原谅我 . 现在几天困扰着我 .
1 回答
当你这样做:
你得到的是一个
NSEntityDescription
的实例 . 这是一个对象,它等同于您在Xcode中的Core Data模型编辑器中配置的实体类型 . 它表示实体类型,而不是该实体的实例 .从错误消息中可以看出
trainingDayObject
被声明为VitTrainingDay *
,它是指向托管对象实例的指针 .这里的区别与类和类的实例之间的区别完全相同 . 它's like you'试图将
NSString
类分配给应该是字符串的特定实例的东西 .你真正想要的是什么
因为此方法创建实体类型的新实例,而不是仅为您提供实体类型对象本身 .