gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:05 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com