Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 错误:线程1:信号SIGABRT(在数组中追加元素时)_Arrays_Swift_Xcode_Xcode6 - Fatal编程技术网

Arrays 错误:线程1:信号SIGABRT(在数组中追加元素时)

Arrays 错误:线程1:信号SIGABRT(在数组中追加元素时),arrays,swift,xcode,xcode6,Arrays,Swift,Xcode,Xcode6,当我尝试在数组中追加元素时,会显示错误。下面是代码 func saveRecentSearch() { var dictSearch = [String:Any]() if let onJourney = Global.onWordJ { dictSearch["From"] = onJourney.source dictSearch["Fromid"] = Global.onWordJ?.source?.CM_C

当我尝试在数组中追加元素时,会显示错误。下面是代码

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
方法中调用这个函数。

您应该已经显示了问题中的错误消息。错误很明显

Search
的值是一个数组,因此强制转换
为![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
子句。

什么是
UserDefault
?UserDefaults.standard显示在
UserDefaults
中为“Search”键存储字典的代码。为什么在
cellForRow
中调用此函数
cellForRow
被频繁调用,该函数与任何
indepath
都不相关。因此,相同的代码会执行多次。这太没效率了。我改了,对不起。但是错误的原因是什么呢。谢谢你节省了我的时间。我多次面对同样的问题,我只是用试错法来解决它。你能解释一下到目前为止你做了什么吗。再次感谢。我看到了错误消息。集合类型数组(基于索引)和字典(基于键)是不同的,彼此不相关