我应该使用 NSUserDefault 还是 CoreData 来保存最后十个分数?

Should I use NSUserDefault or CoreData for saving the last ten scores?

现在我有一个 struct,其中包含多个词典和字符串,用于保存每个级别的用户分数和他们键入的用户名。然后我将 struct 分数保存到 NSUserdefault.

struct Scores: Codable {
    var userName: String = ""
    var totalScore: Int = 0
    var highScore: [String : Int] = [:]
    var scoreA: [String : Int]  = [:]
    var scoreB: [String : Int] = [:]
}

UserDefaults.standard.set(try? PropertyListEncoder().encode(scores), forKey:"scores_1")

这很好用,但我需要保存用户的最后十个分数。我想知道我应该使用 core-data 还是继续使用 NSUserdefaults?不确定哪个是最佳做法。

编辑:我应该将数据保存在 .json 文件中吗?

UserDefaults 最好用于存储少量数据,而不是数组。

每次调用密钥时,存储它的整个 plist 文件都会被调用到内存中。

例)

let volumeLevel = UserDefaults.Standard.integer(forKey: "volume")

因此,如果您存储的数组在用户每次玩游戏时都会增长,最终您将遇到内存问题。

对于上面的示例,使用 UserDefaults 存储高分和用户名很好,但我建议使用 CoreData(或其他东西)存储一个数组,该数组包含每个 运行 的数据游戏。