2016-03-10 2 views
2

Я хочу создать словарь из массива и назначить новый пользовательский объект для каждого из них. Я буду делать вещи с объектами позже. Как я могу это сделать?Создайте словарь из массива в Swift

var cals = [1,2,3] 
// I want to create out of this the following dictionary 
// [1:ReminderList() object, 2:ReminderList() object, 3:ReminderList() object] 

let calendarsHashedToReminders = cals.map { ($0, ReminderList()) } // Creating a tuple works! 

let calendarsHashedToReminders = cals.map { $0: ReminderList() } // ERROR: "Consecutive statements on a line must be separated by ';'" 
+1

положить их в скобки, cals.map {[$ 0: ReminderList()]} – ogres

+0

Хотите словарь или массив словарей? Потому что это то, что предлагают огры и Сахил Капур. – Eendje

+0

Я отредактировал мой вопрос, чтобы сделать его более ясным. Я хотел бы иметь один словарь, а не набор словарей. – Daniel

ответ

6

map() возвращает Array так что вы должны либо использовать reduce() или создать словарь, как это:

var calendars: [Int: ReminderList] = [:] 
cals.forEach { calendars[$0] = ReminderList() } 

Вы также можете использовать reduce() получить Oneliner, но я не фанат использования reduce() для создания массива или словаря.

+0

Вам понадобятся 'var calendars ...', так как он мутировался –

+0

Нужно быть ** var ** –

+0

Извините, что вы правы. Я всегда совершаю эту ошибку. :) – Eendje

Смежные вопросы