首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CoreData中存储排行榜分数?

在CoreData中存储排行榜分数?
EN

Stack Overflow用户
提问于 2021-11-22 17:20:15
回答 1查看 61关注 0票数 0

我正试图在我的应用程序上存储一个CoreData格式的排行榜(具有最终的CloudKit功能),但我对如何最好地做到这一点感到困惑。

用户将能够创建和保存多个排行榜。每个排行榜都有一个创建日期、名称、ID以及该排行榜的所有分数。在核心数据模型中(如下所示),我将所有这些属性作为属性添加到排行榜实体中,而对于score属性,我将其保留为未定义。我正在考虑让它成为我的score结构的数组。但是,当我尝试在Persistence.swift文件中添加newLearboard.scores = [Score]()时,我被告知需要添加分数as NSObject。这是正确的方法吗?或者当我去添加/显示分数排行榜时,这会产生意想不到的后果吗?

Score是一个只有几个字段的结构,比如name和value等。

我还可能最终将Score数组转换为swift集合包中的OrderedSet。这会产生其他问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-11-22 18:08:50

核心数据不知道如何存储Swift结构。Xcode试图提供帮助,但并没有真正成功。使用as NSObject不会做您想要的事情,因为结构不能被类型转换为NSObject

Core Data的方法是向模型中添加第二个名为Score的实体,然后添加一个从LeaderboardScore的核心数据到多个关系。则每个Score将是NSManagedObject,它是NSObject的子类。

如果您可以首先将其转换为一个实例Data,那么也可以将任何内容放入Core Data中。如果您使用JSONEncoder,您可以将您的分数数组转换为Data,并使用Data属性。您必须编写代码,以便在每次更新分数时进行编码,并在每次读取分数时进行解码。如果您决定这样做,请记住,尽管JSONEncoder使用Codable,但Codable对Core Data没有用处(它可以使用NSCoding,但这不是一回事)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70069884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档