Как назначить массив int и строк в одну строковую переменную в swift?
У меня есть массив, который принимает 2 типа, String и Int, код выглядит так
var totalDoubleSet1Array = [(Dante,10), (Cassius, 9), (Rio, 5)]
let sortedArray = totalDoubleSet1Array.sort { $0.1 > $1.1 }
Затем я использую функцию сортировки, чтобы упорядочить самый высокий балл (Int) до самого низкого с именем рядом с ним. (Таким образом, я могу присвоить это строке и отобразить в AlertAction). Я видел где-то здесь, что да, я могу вывести на консоль массив одного типа String или Int и т. Д., Но как я могу назначить этот массив из 2 типы (Stings и Ints) для новой переменной String, чтобы я мог назначить ее в сообщении AlertAction в быстром, пожалуйста? Или даже лучше, как я могу получить отдельный элемент каждой записи, чтобы я мог назначить его на строку Var? Надеюсь, это имеет смысл.. Спасибо
2 ответа
Это не "массив двух типов", это массив кортежей. Вы можете получить элемент из массива и взять его отдельные части, например:
let (name, score) = totalDoubleSet1Array[i]
После этого назначения вы получите две переменные - name
типа String
это имеет значение i
имя -го элемента и score
типа Int
это имеет значение i
оценка по второму элементу.
Если вам нужно только имя, у вас есть два варианта:
- Вы могли бы использовать
let (name, _) = totalDoubleSet1Array[i]
синтаксис или - Вы могли бы использовать
let name = totalDoubleSet1Array[i].1
вместо.
Обратите внимание, что вы уже используете второй синтаксис в выражении сравнения вашей функции сортировки:
sort { $0.1 > $1.1 }
По мнению Apple, кортежи не лучший выбор для структур данных...
Почему бы просто не использовать пользовательскую структуру
struct Player {
var name : String
var score : Int
}
let totalDoubleSet1Array = [Player(name:"Dante", score:10), Player(name:"Cassius", score:9), Player(name:"Rio", score:5)]
let sortedArray = totalDoubleSet1Array.sort { $0.score > $1.score }
Тогда вы можете легко получить доступ к имени, например, в виде таблицы
let player = sortedArray[indexPath.row]
nameLabel.text = player.name