2015-06-20 5 views
0

Мне нужно использовать цикл for для создания массива 2d. До сих пор «+ =» и .append не дали никаких результатов. Вот мой код. Извините за то, что вы набрали переменную.с программным обеспечением 2d массива в swift

let firstThing = contentsOfFile!.componentsSeparatedByString("\n") 

var secondThing: [AnyObject] = [] 

for i in firstThing { 
    let temp = i.componentsSeparatedByString("\"") 
    secondThing.append(temp) 
} 

Идея состоит в том, что она принимает содержимое файла csv, а затем разделяет отдельные строки. Затем он пытается отделить каждую из строк кавычками. Здесь возникает проблема. Я успешно делаю разделительный массив с котировками (хранящийся в temp), однако я не могу сделать их набор из одного массива (т. Е. Массив 2d), используя цикл for. Приведенный выше код генерирует ошибку. Есть ли у кого-нибудь ответ, как построить этот 2d-массив?

+0

для 2D массива вы бы ВГА объявить secondThing как '[[AnyObject]]' ' – luk2302

+0

secondThing' должен быть объявлен как' var' если вы хотите изменить его – vacawama

+0

И пока вы на нем, вы также можете более четко указать, что содержит 'secondThing':' var secondThing: [[String]] = [] '. Это массив массива 'String'. – vacawama

ответ

1

Вы можете сделать это с помощью функции высшего порядка ...

let twoDimensionalArray = contentsOfFile!.componentsSeparatedByString("\n").map{ 
    $0.componentsSeparatedByString("\"") 
} 

Функции карты принимает массив элементов и отображает каждый из них к другому типу. В этом я сопоставляю строки из первого массива в строки pf массива и создаю 2d-массив.

Это выведет тип массива, который был создан, поэтому не нужно ставить [[String]].

Здесь вы идете ...

enter image description here