调整自定义 class 以与 CoreData 兼容
Adapting custom class to be compatible with CoreData
我阅读了一些 CoreData 教程和 Apple 的文档,但我仍然没有找到一件事:如何将 CoreData 与自定义完全集成 class。
假设我有自定义 class Dog
并且我在创建项目时检查了 "Include CoreData"。
这只狗有几个属性,如 name
、legsNumber
和一些枚举,如 vaccinationStatus
以及 .Vaccinated
和 .NotVaccinated
.
据我了解,唯一的方法是创建一个新文件并调整代码。我必须创建一个 NSManagedObject
subclass 并将其分配给 .xdatamodeld
文件中的实体(在本例中为 Dog)。然后它创建 2 个文件 Dog+CoreDataProperties.swift
和 Dog.swift
.
我应该在 Dog+CoreDataProperties.swift
中添加我希望狗拥有的属性,例如 @NSManaged var name: String
和 legsNumber
,但是枚举呢?
可以这样吗?
@NSManaged enum VaccinationStatus {
case Vaccinated
case NotVaccinated
}
我可以在其中添加另一个具有属性的 class 吗?就像一个数组,说出每只狗衣服的品牌名称和价格(有点极端,但你明白我的意思)。还是我必须添加另一个实体并创建另一个 NSManagedObject
文件并向其添加 NSManaged
属性?
通常您会创建模型,在其中添加所有属性,然后 Xcode 会为您生成代码。对于您的枚举,我会在模型中使用整数或布尔类型(取决于枚举的类型)。
现在,在 Xcode 生成的 classes 中,您可以添加额外的函数来公开您的实体的数据,并允许以您想要的任何方式更改该数据 - 请务必调用 Xcode 为您生成的 setter 和 getter。
因此,在那个 class 中,您将定义您的枚举,并添加函数来设置和获取枚举,这会将提供的枚举转换为 boil 并将其存储在实体中。您可以使用枚举的原始值来提供帮助。
您还需要考虑保存的方式和时间...
我阅读了一些 CoreData 教程和 Apple 的文档,但我仍然没有找到一件事:如何将 CoreData 与自定义完全集成 class。
假设我有自定义 class Dog
并且我在创建项目时检查了 "Include CoreData"。
这只狗有几个属性,如 name
、legsNumber
和一些枚举,如 vaccinationStatus
以及 .Vaccinated
和 .NotVaccinated
.
据我了解,唯一的方法是创建一个新文件并调整代码。我必须创建一个 NSManagedObject
subclass 并将其分配给 .xdatamodeld
文件中的实体(在本例中为 Dog)。然后它创建 2 个文件 Dog+CoreDataProperties.swift
和 Dog.swift
.
我应该在 Dog+CoreDataProperties.swift
中添加我希望狗拥有的属性,例如 @NSManaged var name: String
和 legsNumber
,但是枚举呢?
可以这样吗?
@NSManaged enum VaccinationStatus {
case Vaccinated
case NotVaccinated
}
我可以在其中添加另一个具有属性的 class 吗?就像一个数组,说出每只狗衣服的品牌名称和价格(有点极端,但你明白我的意思)。还是我必须添加另一个实体并创建另一个 NSManagedObject
文件并向其添加 NSManaged
属性?
通常您会创建模型,在其中添加所有属性,然后 Xcode 会为您生成代码。对于您的枚举,我会在模型中使用整数或布尔类型(取决于枚举的类型)。
现在,在 Xcode 生成的 classes 中,您可以添加额外的函数来公开您的实体的数据,并允许以您想要的任何方式更改该数据 - 请务必调用 Xcode 为您生成的 setter 和 getter。
因此,在那个 class 中,您将定义您的枚举,并添加函数来设置和获取枚举,这会将提供的枚举转换为 boil 并将其存储在实体中。您可以使用枚举的原始值来提供帮助。
您还需要考虑保存的方式和时间...