ОШИБКА: Поток 1: Сигнал SIGABRT (при добавлении элемента в массив) - PullRequest
0 голосов
/ 11 декабря 2018

Когда я пытаюсь добавить элемент в массив, отображается ошибка. Вот код.

func saveRecentSearch()  {
        var dictSearch = [String:Any]()
        if let onJourney = Global.onWordJ {
            dictSearch["From"] = onJourney.source
            dictSearch["Fromid"] = Global.onWordJ?.source?.CM_CityID
            dictSearch["To"] = Global.onWordJ?.destination
            dictSearch["Toid"] = Global.onWordJ?.destination?.CM_CityID
        }
        if let onJourney = Global.returnJ {
            dictSearch["todate"] = onJourney.journeyDate!
        }
        var arr = [[String:Any]]()
        if let arrSearch = UserDefault["Search"] {
            DispatchQueue.main.async {
                arr.append(arrSearch as! [String : Any])
                arr.append(dictSearch)
            }
        } else {
            arr.append(dictSearch)
        }
        UserDefault["Search"] = arr
    }

И я вызываю эту функцию в моем методе cellForRowAt indexPath tableView.

1 Ответ

0 голосов
/ 11 декабря 2018

Вы должны были показать сообщение об ошибке уже в вопросе.Ошибка довольно очевидна.

Значение ключа Search - это массив , поэтому принудительное приведение as! [String : Any] к словарю завершается неудачей.

Измените код на

...
var arr = [[String:Any]]()
if let arrSearch = UserDefault["Search"] as? [[String : Any]] {
   arr.append(contentsOf: arrSearch)
}
arr.append(dictSearch)
UserDefault["Search"] = arr
...

Отправка в основной поток и предложение else не требуется.

...