核心数据中如何存储大数组?

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

我的核心数据数据库中有一个名为 AudioFile 的实体。它具有名称、艺术家、文件扩展名等属性,这些属性都是字符串。 只要名称和文件扩展名不同,音频文件就是唯一的。

我还有一个名为“UpNextItem”的结构,它与核心数据中的“AudioFile”实体具有相同的属性,除了有一个 UUID 类型的附加 id 属性,因为用户可以添加同一音频文件的多个实例。

如何将非常大的下一个项目数组存储到磁盘?使用 JSONEncoder 也非常慢,CPU 使用率几乎达到 140%,我的应用程序挂起近 2-3 秒。

或者有更好的方法来存储这个吗?因为“AudioFile”和“UpNextItem”几乎相同?

我期望用户在数组中拥有 10000 或更多的下一个项目,因此实际上需要在数组中存储大量数据。

func saveUpNextItems() {
        if let items = try? JSONEncoder().encode(upNextManager.upNextItems) {
        do {
            try items.write(to: FileManager.upNextQueueURL.appendingPathComponent("upNextItems"))
        } catch {
            print(error)
        }
    }
}
swift core-data
1个回答
0
投票

您将创建一个名为 UpNextItem 的新核心数据实体,该实体将具有标识符和与音频文件的(非删除)Many:1 关系。然后,您将拥有一个与 UpNextItem 具有有序 1:Many 关系(具有级联删除)的播放列表实体。

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