Ios 分配给'的指针类型不兼容;NSManagedObject子类*';从';N实体描述*';

Ios 分配给'的指针类型不兼容;NSManagedObject子类*';从';N实体描述*';,ios,objective-c,core-data,nsentitydescription,Ios,Objective C,Core Data,Nsentitydescription,我正在保存托管对象上下文,并使用以下方法进行保存: trainingDayObject = [NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context]; 一切都很好,但我得到了警告: Incompatible pointer types assigning to 'VitTrainingDay *' from 'NSEntityDescription *' VitTraining

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

trainingDayObject = [NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context];
一切都很好,但我得到了警告:

Incompatible pointer types assigning to 'VitTrainingDay *' from 'NSEntityDescription *'
VitTrainingDay
是核心数据实体TrainingDay的NSManagedObject子类。
trainingDayObject
VitTrainingDay

我曾尝试阅读
NSEntityDescription
上的文档,但由于我正在分配一个实体,我对问题所在感到困惑

我对核心数据和Objective-C非常陌生,所以如果这是显而易见的,请原谅我。这已经困扰我好几天了

执行此操作时:

[NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context];
您得到的是
NSEntityDescription
的一个实例。这是一个与您在Xcode的核心数据模型编辑器中配置的实体类型等效的对象。它表示实体类型,而不是该实体的实例

从错误消息中可以看出,
trainingDayObject
被声明为
VitTrainingDay*
,它是指向托管对象实例的指针

这里的区别与类和类实例之间的区别完全相同。这就像您试图将
NSString
类分配给某个应该是字符串的特定实例的对象

你真正想要的是

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

因为此方法创建实体类型的新实例,而不仅仅是给您实体类型对象本身。

如果我使用
insertNewObjectForEntityForName
除了从其他创建的对象保存MOC之外,我最终还创建了空对象。例如,在我的表视图中,我得到的是nil,nil,Name 1,Name 2,而不是预期的Name 1,Name 2。然后问另一个问题,该问题提供了关于您正在做什么的更多细节。例如,当您使用上面问题中的代码行时,您试图做什么。只有一行,就不可能给出反映应用程序整体结构上下文的答案。我所做的是解释这一行的错误,我认为这是一个更简单的问题,不想让问题过于复杂化。下面是我的另一个问题: