У меня возникла очень странная проблема, и я не могу понять, что здесь происходит.Не удалось присвоить значение типа «NSNull» в «NSString»
Вот мой код
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
, но я не знаю, почему его дает мне пустое значение и почему название города успешно работает, потому что страна также существует в том же массиве, из которого я получаю город
UPDATE:
Эта строка печатает название страны успешно
print("countryName is \(countryName)")
Прежде всего, вы можете взорвать линию сбоев в нескольких строках, чтобы узнать, что именно линия вылетает? – thedjnivek
извините, что это значит. Я тебя не понял? – hellosheikh
попытайтесь напечатать '((self.dict [" \ (i) "] как? NSDictionary)! [" Страна "] как NSDictionary)'. Я думаю, что ключ 'name' не установлен – thedjnivek