答案 0 :(得分:5)
尝试使用CoreData
存储用户分数。
使用Score
和level
作为属性创建scoreValue
对象。
这样一来,数据就会持久化,并且可以通过多种方式轻松地进行排序和过滤。
您可以保存所有分数并获取最高分数,或管理要保存的分数并始终全部获取。
获取最高分后,请按scoreValues
降序排序,按排名对其进行排序。
CoreData是一个非常强大的免费赠品
答案 1 :(得分:0)
我建议你使用链接链表,这是最合适的数据结构。 它允许您在任何位置快速插入元素。
答案 2 :(得分:-1)
如果您想使用UserDefaults,可以执行以下操作:
var rank = [Int:[String:Int]]()
rank[1] = ["level" : 1,
"score" : 99]
rank[2] = ["level" : 30,
"score" : 89]
let gameData = NSKeyedArchiver.archivedData(withRootObject: rank)
UserDefaults.standard .set(gameData, forKey: "score")
let dataFromUserDefaults = UserDefaults.standard .value(forKey: "score")
let retrievedData = NSKeyedUnarchiver.unarchiveObject(with: dataFromUserDefaults as! Data) as? [Int:[String:Int]]