let highscore = leaderboardRequest.scores[0] as! GKScore
Swift2: Невозможно подстроить значение типа '[GKScore]?'
результаты в
Cannot subscript a value of type '[GKScore]?'
Что такое правильный синтаксис в Swift2
let highscore = leaderboardRequest.scores[0] as! GKScore
Swift2: Невозможно подстроить значение типа '[GKScore]?'
результаты в
Cannot subscript a value of type '[GKScore]?'
Что такое правильный синтаксис в Swift2
Попробуйте это:
let highscore = leaderboardRequest.scores?[0] as! GKScore
еще лучше:
if let highscore = leaderboardRequest.scores?[0] {
//your code
}
Или:
guard let highscore = leaderboardRequest.scores?[0] else { return }
leaderboardRequest.scores
не разворачивали, разворачивать его перед использованием подстрочный.
if let scores = leaderboardRequest.scores {
if let highscore = scores.first as? GKScore {
// safely use `highscore` here
}
}
«разворачивание» - это ключевая концепция в Swift, она поставляется с опциями.
?
часть в [GKScore]?
означает, что это необязательно. Он содержит либо значение, либо значение nil. Необязательный - это не тот тип, который он держит, вам нужно «извлечь» значение из опции «Дополнительно», оно называется «разворачивание».
Чтобы безопасно разворачивать значение с помощью опции «Дополнительно», используйте «if let», как и я, или «guard», который появился в Swift 2, или, возможно, цельное соединение и т. Д. Существует много разных методов.
Все это объясняется в книге «Быстрые основы Apple» и сайте документации.
Я код для своих детей, так что я не хватает Swift словарный запас. Что разворачивается? – user594883
Я подробно ответил на вопрос. – Moritz
@ user594883 Развертывание принимает реальное значение (не ноль) из необязательного значения (может быть nil), используя как! для разворачивания приведет к сбою, если это значение равно нулю. –