我正在开发一个使用
SwiftData
和 CloudKit
的应用程序,为用户提供可选择的 List
电影类型供选择,由 enum
和另一个对象数组填充(稍后将详细介绍) ):
enum MovieGenre: String, Codable, CaseIterable
{
case drama = "Drama"
case comedy = "Teleplay"
case action = "Action"
case horror = "Horror"
case thriller = "Thriller"
case musical = "Musical"
case animated = "Animated"
}
在这个
List
上,有一个Button
,允许用户添加自己的流派,为此我有一个类model
CustomMovieGenre
:
import Foundation
import SwiftData
@Model
class CustomMovieGenre
{
var name: String = ""
init(name: String)
{
self.name = name
}
}
一旦添加了
CustomMovieGenre
,它将被附加到电影类型的 List
中。由于我想要一个 MovieGenre
项来存储其他持久模型数据(例如该类型的电影数组等),因此我正在考虑消除枚举并将 CustomMovieGenre
和 MovieGenre
合并到一个名为 的类中MovieGenre
(这也会简化显示 List
的代码)。
由于我仍然希望拥有默认的类型,我想知道是否有一个通用的模式来实现这一点?截至目前,当应用程序启动时,我想我必须检查并查看默认的
MovieGenre
是否存在,如果不存在,则创建它们。但是,如果可能的话,我想避免这样做。
消除枚举并拥有单个
MovieGenre
类是正确的举措。然后,枚举中的默认类型将是预定义的 MovieGenre 实例,并作为初始应用程序设置/入门的一部分进行预填充。
如果您从 Apple 的 SwiftData 教程下载文件,您将通过查看
SampleData
文件夹了解它们是如何进行的。
您不必在每次应用程序启动时检查默认类型是否存在,因为作为入门的一部分,您只需导入一次默认数据。