我应该使用 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(或其他东西)存储一个数组,该数组包含每个 运行 的数据游戏。
现在我有一个 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(或其他东西)存储一个数组,该数组包含每个 运行 的数据游戏。