如何将属性添加到使用数据模型创建的核心数据类?

时间:2014-11-15 13:12:00

标签: ios objective-c core-data nsmanagedobject

我正在创建一个todo应用:

我在我的项目.datamodel文件中创建了一个实体,我在实体中添加了一个名为“content”的字符串的属性,并使用“editor”>创建了NSManagedObject子类。 “创建NSManagedObject子类:

enter image description here

创建了这个类:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface Targets : NSManagedObject

@property (nonatomic, retain) NSString * content;

@end

但现在我想要另一个“id”属性,我可以给每个todo一个id ... 我该怎么做?可以手动完成吗?因为我是从实体模型中生成的,所以我觉得我需要创建一个新的实体才能做到这一点......?

如果你可以指导我,也许通过解释它是如何工作的那就太棒了。可能我不明白这里的东西,这就是我问这个问题的原因

2 个答案:

答案 0 :(得分:5)

鉴于Xcode似乎有一个错误阻止它正确替换你的CoreData文件,我已经用一种解决方法改写了我的答案。

  1. 删除最初生成的类文件:
  2. enter image description here

    (点击移至垃圾箱。)

    1. 添加属性:
    2. enter image description here

      1. 以您生成我们在步骤1中删除的原始文件的确切方式生成类: enter image description here

答案 1 :(得分:2)

因此,解决问题的方法实际上非常简单:

要向实体添加另一个属性,您可以完全按照与content属性相同的方式处理它。只需在图形编辑器中添加属性,就像之前使用content一样,然后再使用Xcode的内置功能生成类,就像以前一样。 / p>

Xcode将覆盖以前生成的文件,并将其替换为现在具有该属性的新版本。按照您的喜好随时进行该过程并无害处。 :)

修改 简而言之,您需要记住在更改数据模型后从设备(或模拟器)删除应用程序,因为否则应用程序将崩溃,因为您的新Core Data模型不一致你以前用过的那个。 其次,如果你想为数据模型类添加功能(无论如何你应该非常小心,但也许是一些实用的核心数据函数......),你应该使用 iOS类别,以便在重新生成模型类时,为此编写的代码不会被删除。关于iOS开发的斯坦福大学讲座在核心数据上有一个great introduction session,详细解释了这种方法!