现在我有一个包含多个字典和字符串的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 来存储 High Score 和 UserName 就可以了,但我建议使用 CoreData(或其他东西)来存储包含每次运行游戏的数据的数组。
关于swift - 我应该使用 NSUserDefault 还是 CoreData 来保存最后十个分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999108/