使用可以具有默认预定义值和用户生成值的对象保存数据

问题描述 投票:0回答:1

我正在开发一个使用

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
是否存在,如果不存在,则创建它们。但是,如果可能的话,我想避免这样做。

swift swiftui cloudkit swiftdata
1个回答
0
投票

消除枚举并拥有单个

MovieGenre
类是正确的举措。然后,枚举中的默认类型将是预定义的 MovieGenre 实例,并作为初始应用程序设置/入门的一部分进行预填充。

如果您从 Apple 的 SwiftData 教程下载文件,您将通过查看

SampleData
文件夹了解它们是如何进行的。

您不必在每次应用程序启动时检查默认类型是否存在,因为作为入门的一部分,您只需导入一次默认数据。

© www.soinside.com 2019 - 2024. All rights reserved.