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
都不相关。因此,相同的代码会执行多次。这太没效率了。我改了,对不起。但是错误的原因是什么呢。谢谢你节省了我的时间。我多次面对同样的问题,我只是用试错法来解决它。你能解释一下到目前为止你做了什么吗。再次感谢。我看到了错误消息。集合类型数组(基于索引)和字典(基于键)是不同的,彼此不相关