Несколько рекордов Swift 5 - PullRequest
       11

Несколько рекордов Swift 5

0 голосов
/ 25 февраля 2020

По сути, у меня есть массив, в котором хранятся три лучших результата. Я хочу, чтобы массив мог хранить каждый высокий балл в соответствующем пользовательском дефолте. Однако, если число заменяет последний индекс, например, мне нужно изменить и два других числа. Кроме того, повторы должны быть в порядке. Это будет выглядеть примерно так:

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
            }
        }

1 Ответ

1 голос
/ 25 февраля 2020

Если вы просто сохраняете рекорды без каких-либо имен или чего-либо еще, я бы сохранил их как массив целых чисел, чтобы вы могли сохранять и получать их из 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")
...