【问题标题】:Adapting custom class to be compatible with CoreData调整自定义类以与 CoreData 兼容
【发布时间】:2016-07-23 15:13:26
【问题描述】:

我阅读了一些 CoreData 教程和 Apple 的文档,但我仍然没有找到一件事:如何将 CoreData 与自定义类完全集成。

假设我有自定义类Dog,并在创建项目时选中了“包含 CoreData”。

狗有几个属性,如namelegsNumber 和一些枚举,如vaccinationStatus,情况为.Vaccinated.NotVaccinated

据我了解,唯一的方法是创建一个新文件并调整代码。我必须创建一个NSManagedObject 子类并将其分配给.xdatamodeld 文件中的一个实体(在本例中为Dog)。然后它会创建 2 个文件 Dog+CoreDataProperties.swiftDog.swift

我应该在Dog+CoreDataProperties.swift 中添加我希望狗拥有的属性,例如@NSManaged var name: StringlegsNumber,但是枚举呢?

可以这样吗?

@NSManaged enum VaccinationStatus {
    case Vaccinated
    case NotVaccinated
    }

我可以在其中添加另一个具有属性的类吗?就像一个数组一样,说出每只狗衣服的品牌名称和价格(有点极端,但你明白我的意思)。还是我必须添加另一个实体并创建另一个NSManagedObject 文件并向其中添加NSManaged 属性?

【问题讨论】:

    标签: swift class core-data enums nsmanagedobject


    【解决方案1】:

    通常您会创建模型,在其中添加所有属性,然后 Xcode 会为您生成代码。对于您的枚举,我会在模型中使用整数或布尔类型(取决于枚举的类型)。

    现在,在 Xcode 生成的类中,您可以添加额外的函数来公开实体的数据并允许以您想要的任何方式更改该数据 - 只需确保调用 Xcode 为您生成的 setter 和 getter。

    因此,您将在该类中定义枚举,并添加函数来设置和获取枚举,这会将提供的枚举转换为沸腾并将其存储在实体中。您可以使用枚举的原始值来提供帮助。

    您还需要考虑如何以及何时保存...

    【讨论】:

    • 你能提供一些代码吗?我一直在研究,但我仍然没有找到我想要的。假设我有实体EmployeeEntity,其属性为namedateOfBirth(字符串和日期)。每个员工都有要完成的任务。所以这应该是另一个实体TaskEntity,具有taskNametaskStatusValue 属性?并将tasks 添加为与EmployeeEntity 的关系并将employee 添加到TaskEntity?然后我应该为这两个实体创建文件?我基本上希望最终结果是让我访问employee.task[0].status。上面的逻辑对吗?
    • 然后,如果我在本教程(在枚举部分)jessesquires.com/better-coredata-models-in-swiftTask.swift 中添加代码,我是否能够访问employee.task[0].status
    • 是的,你的逻辑听起来不错。我没有时间看你参考的教程
    猜你喜欢
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多