Почему UInt32(stringArray.count) считает неправильно в функции, но корректен в одиночку на быстрой площадке?
Почему этот код считает 6 элементов, как 9 ("неправильно") на быстрой площадке.
var stringArray = ["1", "2", "3", "4", "5", "6"]
for var i = 0; i < 3; i++ {
stringArray.append("Paragraph" + "\(i)")
}
func concat (array: [String]) -> String {
let count = UInt32(stringArray.count) ** --> =9 **
let randomNumberOne = Int(arc4random_uniform(count))
let randomNumberTwo = Int(arc4random_uniform(count))
let randomNumberThree = Int(arc4random_uniform(count))
let concatString = array[randomNumberOne] + array[randomNumberTwo] + array[randomNumberThree]
return concatString
}
let finalString = concat(stringArray)
... но посчитайте этот код как 6 (правильный)
var stringArray = ["1", "2", "3", "4", "5", "6"] ** --> =6 **
let count = UInt32(stringArray.count)
Это как-то связано с 64 против 32 бит? У меня Xcode Version 6.0 (6A313).
1 ответ
Решение
Вы добавляете новые элементы к тому же массиву stringArray, в котором уже есть содержимое ["1", "2", "3", "4", "5", "6"]. Затем вы добавляете к нему строку "абзац (i)" 3 раза. Итак, новый контент теперь, ["1", "2", "3", "4", "5", "6", "Параграф 1", "Параграф 2", "Параграф 3"]. Вот как счетчик достиг 9.