快速从NSDictionary读取数据

MTA*_*MTA 3 iphone json nsdictionary ios swift

我正在使用此代码从读取数据NSDictionary

let itemsArray: NSArray = response.objectForKey("items") as! NSArray;
let nextPageToken: String = response.objectForKey("nextPageToken") as! String

var videoIdArray: [String] = []

for (item) in itemsArray {
      let videoId: String? = item.valueForKey("id")!.valueForKey("videoId") as? String
      videoIdArray.append(videoId!)
}
Run Code Online (Sandbox Code Playgroud)

但是,当我items还是nextPageToken不存在,我得到这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?我该如何解决?

Mid*_* MP 7

您的代码中有两个问题:

  1. 您正试图强制拆开一个可以为nil的可选内容。如果不确定数据是否可用,切勿使用强制展开。
  2. 您使用valueForKey:而不是objectForKey:从字典中检索数据。使用objectForKey:而不是valueForKey:从字典中获取数据。

您可以通过以下方式解决崩溃问题:

let itemsArray: NSArray?   = response.objectForKey("items") as? NSArray;
let nextPageToken: String? = response.objectForKey("nextPageToken") as? String

var videoIdArray: [String] = []
if let itemsArray = itemsArray
{
    for (item) in itemsArray
    {
       let videoId: String? = item.objectForKey("id")?.objectForKey("videoId") as? String
       if (videoId != nil)
       {
          videoIdArray.append(videoId!)
       }
     }
}
Run Code Online (Sandbox Code Playgroud)