【问题标题】:Core Data - The correct way to subclass NSManagedObject in objective-c project Xcode 8核心数据 - 在 Objective-C 项目 Xcode 8 中子类化 NSManagedObject 的正确方法
【发布时间】:2017-04-20 13:24:00
【问题描述】:

我今天刚开始学习如何使用Core Data,当我必须在我的objective-c 项目中从NSManagedObject 子类化时遇到了一个问题。我正在关注斯坦福 iOS 7 课程(我来自Swift 背景,想了解更多关于objective-c 的信息)Stanford University Developing iOS 7 Apps: Lecture 13 - Core Data and Table View 这是我到目前为止所做的:

首先

创建我的CoreDataModel.xcdatamodeld 文件,并像这样配置我的实体

下一步

突出显示CoreDataModel.xcdatamodeld 文件后,我转到Editor 并尝试创建NSManagedObject 子类

创建了四个 Swift 文件,包括一个空的桥接头文件 MyProject-Bridging-Header.h

我有很多编译器错误:

我很困惑为什么 xcode 会为我生成 Swift 文件而不是 objective-c 文件,因为我已经使用 objective-c 作为我的语言进行了配置。

如何配置我的头文件以使objective-c 识别我的Swift 文件,或者有没有办法创建objective-c 子类文件,例如.m.h 文件?

重新声明错误可能来自codegen问题 Xcode automatic subclass generation

我的驱动数据有以下文件

欢迎提出任何建议。

【问题讨论】:

    标签: ios objective-c swift xcode core-data


    【解决方案1】:

    这里的Answer 已经介绍了如何生成 Swift 文件。我的涵盖了其他有问题的查询。

    Xcode 现在支持自动生成 NSManagedObject 子类 在建模工具中。生成的文件放在 DerivedData 并在模型保存后在第一次构建时重建。他们也是 由 Xcode 索引,因此命令单击引用并快速打开 按文件名工作。

    更多信息请参考Apple Documentation.

    NSManagedObject 重新声明无效的解决方法

    对于 XCode 8.1,在通过编辑器创建 NSManagedObject 之前,选择您的 Entity,转到 Data Model Inspector 并在 下>Codegen 像这样选择 'Manual/None'

    然后创建NSManagedObject 子类。

    如果您已经创建了NSManagedObject 子类,请执行以下步骤:

    1. 转到您当前的 .xcdatamodeld,将所有 Entities Codegen 设置为 'Manual/None '
    2. 保存项目,删除派生数据。
    3. 清理并构建项目。

    它应该可以工作。

    【讨论】:

      【解决方案2】:

      当您在项目导航器中选择模型时,在文件检查器中,您可以选择生成代码的语言:

      【讨论】:

        猜你喜欢
        • 2017-05-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多