Ошибка - привязка переменной в условии требует инициализатора - PullRequest
0 голосов
/ 16 октября 2019

Не могу решить эту ошибку, нужна небольшая помощь. На самом деле я понимаю, понимают эту ошибку и почему это происходит. Я использую словарь для создания префиксов для моего списка.

func cretaeExtendedTableViewData() {
    // ...

    for country in self.countriesList {
        let countryKey = String(country.name.prefix(1)) // USA > U

        if var countryValues = countriesDictionary[countryKey] {
            countryValues.append(country)
            countriesDictionary[countryKey] = countryValues
        } else {
            // ...
        }
    }
}

1 Ответ

0 голосов
/ 16 октября 2019

Похоже, вы пытаетесь сгруппировать страны по первому символу их имен. Dictionary имеет специальный инициализатор для группировки элементов массива с заданным условием:

let grouped = Dictionary(grouping: countriesList) {
    $0["name"]!.prefix(1)
}

пример:

let countriesList = [
    ["name": "USA"],
    ["name": "UAE"],
    ["name": "Italy"],
    ["name": "Iran"]
]

let grouped = Dictionary(grouping: countriesList) {
    $0["name"]!.prefix(1)
}

print(grouped)

печать:

[  "I": [
         ["name": "Italy"],
         ["name": "Iran"]
  ], 
   "U": [
         ["name": "USA"],
         ["name": "UAE"]
  ]
]
...