objectForKey(" Id")Id不存在时崩溃?

时间:2016-12-15 09:33:41

标签: ios swift dictionary null alamofire

我在iOS应用中使用alamofire进行http请求。当我在Swift中访问响应中的值时,如果key不存在或者获取空值时会崩溃。

  var id = (response.result.value?[p-1].objectForKey("Id"))! as? Int

一般情况下,我们如何检查Swift中不存在的值?

2 个答案:

答案 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