我在iOS应用中使用alamofire进行http请求。当我在Swift中访问响应中的值时,如果key不存在或者获取空值时会崩溃。
var id = (response.result.value?[p-1].objectForKey("Id"))! as? Int
一般情况下,我们如何检查Swift中不存在的值?
答案 0 :(得分:2)
你应该试试这个
if let id = (response.result.value?[p-1].objectForKey("Id"))? as? Int {
// some stuff
}
你的应用程序崩溃是因为你打开了nil对象:.objectForKey(“Id”)
答案 1 :(得分:0)
你必须打开你的选项而不强迫它。在您的情况下,您还应考虑检查response.result.value
是否至少包含p-1
元素:
if let value = response.result.value
{
if p-1 < value.count
{
if let id = value[p-1].objectForKey("Id") as? Int
{
// Do whatever you want with id
}
}
}
您还可以使用我个人认为更清楚的guard
声明:
guard let value = response.result.value
else { return }
guard p-1 < value.count
else { return }
guard let id = value[p-1].objectForKey("Id") as? Int
else { return }
// Do whatever you want with id