【发布时间】:2022-01-01 07:06:56
【问题描述】:
我正在尝试在我的应用上的 CoreData(具有最终的 CloudKit 功能)中存储排行榜,但对如何最好地做到这一点感到困惑。
用户将能够创建和保存多个排行榜。每个排行榜都会有一个创建日期、名称、ID 以及该排行榜的所有分数。在核心数据模型(如下)中,我将所有这些作为属性添加到排行榜实体中,对于得分属性,我将其保留为未定义。我正在考虑将其设为我的 score 结构的数组。但是,当我尝试这样做时,newLearboard.scores = [Score]() 在我的Persistence.swift 文件中被告知我需要添加分数as NSObject。这是执行此操作的正确方法吗,还是会在我添加/显示分数排行榜时产生意想不到的后果?
Score 是一个结构体,包含一些字段,例如名称和值等。
我最终还可以将 Swift 集合包中的 Score 数组转换为 OrderedSet。这会产生其他问题吗?
【问题讨论】:
-
不,不是,创建一个新实体Score,然后在Leaderboard和Score之间建立一对多关系
-
您可以很容易地做到这一点,正如您将在我上面标记的帖子中看到的那样,但是如果出现错误,您可能会丢失整个事情。它全部作为字符串保存到一个变量中。创建与排行榜相关的实体是更安全的方法。
标签: swift xcode core-data swiftui cloudkit