Ios objectForKey(“Id”)Id不存在时崩溃?

Ios objectForKey(“Id”)Id不存在时崩溃?,ios,swift,dictionary,null,alamofire,Ios,Swift,Dictionary,Null,Alamofire,我在iOS应用程序中使用alamofire进行http请求。当我在响应中访问一个值时,如Swift中的下面所示,若键不在那个里或获取空值,它就会崩溃 var id = (response.result.value?[p-1].objectForKey("Id"))! as? Int 一般来说,我们如何检查Swift中不存在的值?您应该试试这个 if let id = (response.result.value?[p-1].objectForKey("Id"))? as? Int {

我在iOS应用程序中使用alamofire进行http请求。当我在响应中访问一个值时,如Swift中的下面所示,若键不在那个里或获取空值,它就会崩溃

  var id = (response.result.value?[p-1].objectForKey("Id"))! as? Int
一般来说,我们如何检查Swift中不存在的值?

您应该试试这个

if let id = (response.result.value?[p-1].objectForKey("Id"))? as? Int {
   // some stuff
}
你的应用程序正在崩溃,因为你打开了nil对象:。objectForKey(“Id”)

你应该试试这个

if let id = (response.result.value?[p-1].objectForKey("Id"))? as? Int {
   // some stuff
}

你的应用程序正在崩溃,因为你打开了nil对象:。objectForKey(“Id”)

你必须在不强制打开选项的情况下打开它。在您的情况下,您还应该考虑检查
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
       }
   }
}

你必须在不强制的情况下打开你的选项。在您的情况下,您还应该考虑检查
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
       }
   }
}

如果let id=response.result.value?[p-1]。objectForKey(“id”)为?Int这是最好的答案。你是对的@overactor,我粘贴他的代码,括号是无用的,如果让id=response.result.value?[p-1],objectForKey(“id”)as?Int这是最好的答案。你是对的@overactor,我粘贴了他的代码,括号没用。你没有尽可能地使用可选链接,以@ArnaudWurmel的答案为例。我知道,我分解了可选链接以使OP更清晰。你没有尽可能地使用可选链接,以@ArnaudWurmel的答案为例,我知道,我分解了可选链,以使其更清晰。