gpt4 book ai didi

ios - 无法将类型 'NSNull' 的值转换为 'NSString'

转载 作者:搜寻专家 更新时间:2023-11-01 06:20:00 24 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题,我无法弄清楚这里出了什么问题。

这是我的代码

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 变量中,但我不知道为什么它给我 null 值以及为什么城市名称能够成功工作,因为 country 也存在于我所在的同一个数组中正在获取城市

更新:

这一行打印国家名称成功

  print("countryName is \(countryName)")

最佳答案

好吧,他们告诉你问题是什么:你得到了一个 NSNull 类型的结果,而 NSNull 不能转换为 NSString。

您很可能正在处理 JSON,而 JSON 数据通常包含空值。

离开你的迷宫?和!

写一些对你有帮助的代码。记住任何!如果您没有得到您期望的结果,将会使您的应用程序崩溃。

当你访问字典中的键“name”时,你需要处理以下情况:有一个字符串(对你来说很好),没有(键不存在,很常见),null(服务器告诉你明确表示什么都没有,很常见),一个数字,bool,dict 或 array。

对于每种情况,请告诉我您想要的结果是什么:崩溃?一个可选的字符串是 nil?一个空字符串?通常,如果它存在,您需要一个字符串,如果它是一个数字,则可能需要一个数字转换为字符串,如果键不存在或为 null,则可能是 nil 或一个空字符串,如果您得到一个崩溃或 nil bool 值、字典或数组。

然后写一个函数返回那个值。然后你使用它。当你写 (... as?NSString) 时!你告诉编译器如果它不是字符串你想要崩溃,这就是你得到的。

关于ios - 无法将类型 'NSNull' 的值转换为 'NSString',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35600082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com