我有一个具有现有自定义模型的项目,该项目从REST API(或nsurlcache)以JSON格式获取数据,但是现在我需要添加CoreData模型。关于如何最好地将我的模型“合并”到新的CoreData NSManagedObject模型中,我得到了相互矛盾的信息。
最合理,最干净的方法是什么?
我遇到的一些问题是,我的自定义模型一开始是(是)一个结构,而不是类,但这并不是一个大问题。
接下来的事实是,我在这里有很多“存储的属性”,而在CoreData模型的扩展中创建这些属性时遇到了问题。我需要它们(或替代物),因为有很多自定义格式的数据可能会多余地添加到CoreData模型中,但作为当前属性以非常清晰的方式存在。我试图将其添加到主类文件中,但是,我在很多地方都读到,最好的方法是创建自己的自定义扩展类(甚至不更改自动生成的存根扩展名)。我确实收到一个错误,无法将存储的属性添加到扩展中。我是否应该仅将所有这些功能更改为?好像很脏。
最后,总的来说,从现在开始,我应该如何组织我的模型?我所有的自定义功能都应该保留在我自己的(不是自动生成的)扩展文件中吗?扩展文件通常是针对每个模型或一个群集创建的(如果它们是短模型和相关模型)?是否应该手动将任何内容添加到+ CoreDataClass或+ CoreDataProperties?
答案 0 :(得分:1)
您的冲突信息是什么?
您将需要考虑存储属性的用例。
CoreData对象支持2种不同的类型:临时属性(不会存储在持久性存储中)和非临时属性,它们将存储在持久性存储中。这样,您就可以开始设置模型设计了。两者都需要在模型中。
对不影响应用性能的事物使用更多的计算属性。那些您可以放入扩展名的文件。其他的则需要在模型中,从您的源中导入时要计算一次。
根据您的情况计算出的属性如下所示((考虑到您有一个NSManaged var eventDate
var formattedEventDate: String? {
let dateFormatter = DateFormatter()
//... set desired format/locale
return dateFormatter.string(from: eventDate)
}