【问题标题】:Xcode won't create NSManagedObject classes from data modelXcode 不会从数据模型创建 NSManagedObject 类
【发布时间】:2014-03-06 18:04:57
【问题描述】:

我正在开始将应用程序转换为 Core Data 的过程。我构建了数据模型,首先让 Xcode 成功创建了与实体对应的NSManagedObject 自定义类。但后来我意识到实体和类名没有我的应用程序前缀,我认为这会大大增加转换为 Core Data 所需的编码更改的工作量。

所以我删除了对自定义类的引用,用我的前缀重命名了数据模型中的实体,将每个实体的“类”属性重置为默认值,并尝试再次创建自定义类。我像以前一样完成了向导,但现在 Xcode 拒绝为实体创建类,而是创建一个带有应用程序名称的标头实现对。 .h 和 .m 文件对应于我正在分类的实体(或当我选择多个时列表中的最后一个实体),但名称和关系当然是无效的,因此无用。谁能解释为什么 Xcode 会这样做,以及如何解决它?

【问题讨论】:

    标签: ios xcode core-data nsmanagedobject datamodel


    【解决方案1】:

    您正在创建的托管对象的类名希望与要创建的类的名称相对应 - 所以我不确定您将它们重置为默认值是什么意思,但假设您的前缀是 AB,并且你的类是 Thing,那么你希望类属性是 ABThing。如果您已经这样做了,我可能误解了您将它们恢复为默认值的意思。 另外,值得注意的是,如果您在更改核心数据模型后再次启动应用程序,那么您必须删除当前的核心数据模型 - 您可以使用:

    NSError* error = nil;
    [[NSFileManager defaultManager] removeItemAtURL:<URL For your Store> error:&error];
    

    【讨论】:

    • 汤姆猫,谢谢。类属性实际上是问题所在。按照您的建议,通过为每个实体设置它(在属性检查器中)以匹配现在具有前缀的实体名称来解决问题。现在看起来很明显,但让我失望的是我第一次不必这样做; Xcode 自动设置类名。 (我还不必担心删除更改的数据模型,因为我什至还没有接近尝试构建应用程序的地步。)
    • 更改类名不会导致模型迁移,因此您无需删除模型。我也不建议每次都删除文件。当您实际需要迁移时,这将隐藏,这是有用的信息。并非对模型的每次更改都会导致迁移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多