调整自定义 class 以与 CoreData 兼容

Adapting custom class to be compatible with CoreData

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

假设我有自定义 class Dog 并且我在创建项目时检查了 "Include CoreData"。

这只狗有几个属性,如 namelegsNumber 和一些枚举,如 vaccinationStatus 以及 .Vaccinated.NotVaccinated.

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

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

可以这样吗?

@NSManaged enum VaccinationStatus {
    case Vaccinated
    case NotVaccinated
    }

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

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

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

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

您还需要考虑保存的方式和时间...