现在,我有一个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文件中吗?
答案 0 :(得分:0)
UserDefaults最适合用于存储少量数据,而不是数组。
每次调用密钥时,存储在其中的 entire plist文件都会被调用到内存中。
例如)
let volumeLevel = UserDefaults.Standard.integer(forKey: "volume")
因此,如果您存储的数组每次用户播放时都会增长,那么最终将出现内存问题。
在上面的示例中,使用UserDefaults存储高分和UserName很好,但是我建议使用CoreData(或其他方式)存储一个包含每次游戏运行数据的数组。