Получение индекса элемента при переборе словаря довольно очевидно:
1 | let dictionary = [0: "zero", 1: "one", 2: "two", 3: "three"] |
Совсем по-другому дело обстоит с массивами:
1 | let array = ["zero", "one", "two", "three"] |
Для получения индекса элемента при переборе массива в голову приходит лишь старый добрый цикл for
:
1 | for var i = 0; i < array.count; ++i { |
ну или чуть попроще цикл for-in
:
1 | for i in 0..<array.count { |
Однако в Свифте существует специальная глобальная функция enumerate, которая из элементов массива делает кортежи (tuple), состоящие как раз из индекса элемента и его значения:
1 | for (key, value) in enumerate(array) { |
В Swift 2.0 её необходимо будет вызывать из самих типов, отвечающих протоколу SequenceType, вот так:
1 | for (key, value) in array.enumerate() { |