我有一个非常奇怪的问题,我无法弄清楚这里出了什么问题。
这是我的代码
func updateSearchResultsForSearchController(searchController: UISearchController) {
filterTableData.removeAll(keepCapacity: false)
let searchWord = searchController.searchBar.text!
getCountriesNamesFromServer(searchWord)
let searchPredict = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
newTableData = [String]()
for var i = 0; i < self.dict.count - 1; i++ {
let cityName = (((self.dict["\(i)"] as?NSDictionary)!["City"] as?NSDictionary)!["name"] as?NSString)! as String
let countryName = (((self.dict["\(i)"] as?NSDictionary)!["Country"] as?NSDictionary)!["name"] as?NSString)! as String
print("countryName is \(countryName)")
newTableData.append(cityName)
}
print("newTableData is \(newTableData)" )
let array = (newTableData as NSArray).filteredArrayUsingPredicate(searchPredict)
print("array is\(array)")
filterTableData = array as! [String]
self.tableView.reloadData()
}
程序在此行崩溃
let countryName = (((self.dict["\(i)"] as?NSDictionary)!["Country"] as?NSDictionary)!["name"] as?NSString)! as String
当我在搜索框中输入第一个字符时一切正常,但只要我在searchBox
程序中输入第二个字符就会崩溃,它给了我这个错误
无法将“NSNull”(0x1a03c3768)类型的值转换为“NSString”(0x1a03cd798)。
并且对于您的信息 countryNames 存在于dict
变量中,但我不知道为什么它给我空值以及为什么城市名称成功工作,因为国家也存在于我从中获取城市的同一数组中
更新:
此行成功打印国家名称
print("countryName is \(countryName)")