首页 > 解决方案 > 多个高分 Swift 5

问题描述

基本上,我有一个存储前三个高分的数组。我希望数组能够将每个高分存储在其各自的用户默认值中。但是,例如,如果一个数字替换了最后一个索引,我也需要更改其他两个数字。此外,重复应该没问题。它看起来像这样:

1. 4
2. 4
3. 2

或者

1.5
2.3
3.1

这是我当前不起作用的代码:

var highscoreArray: [Int] = [0,0,0]
var score = Int()
for i in (0...2).reversed(){
            if score >= highscoreArray[i]{
                highscoreArray.append(score)
                highscoreArray.removeFirst()
                UserDefaults.standard.set(score, forKey: "highscore\(i)")
                // going to have to add user defaults here
                break
            } else {
                continue
            }
        }

标签: arraysswiftsprite-kit

解决方案


如果您只是保存没有任何名称或任何内容的高分,我会将它们保存为整数数组,这样您就可以通过一个键从 UserDefaults 保存和获取它们。并按照这些思路做一些事情。

var highScores = UserDefaults.standard.array(forKey: "highScores") as? [Int] ?? [0, 0, 0]
let score = 1

guard score > highScores.last ?? 0 else { return }
highScores.append(score)  // add new core to array
highScores.sort(by:>)     // sort by value

UserDefaults.standard.set(Array(highScores.prefix(3)), forKey: "highScores")

推荐阅读