ios - Swift 从 NSDictionary 读取数据

标签 ios iphone json swift nsdictionary

我正在使用这段代码从 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!)
}

但是当我 itemsnextPageToken 不存在时,我得到这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

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

最佳答案

您的代码中有两个问题:

  1. 你正试图强制解包一个可以为 nil 的可选值。如果您不确定数据是否可用,切勿使用强制解包。
  2. 您正在使用 valueForKey: 而不是 objectForKey: 从字典中检索数据。使用 objectForKey: instead of 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!)
       }
     }
}

关于ios - Swift 从 NSDictionary 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367183/

相关文章:

iphone - 将 UIBarButtonSystemItemAdd 和 UIBarButtonSystemItemTrash 添加到导航项或 UISegmentedControl 的一侧

iPhone 和任何其他智能手机通过蓝牙进行点对点通信

ios - Swift:二维数组处理的JSON对象

javascript - 从 safari 调用 ios 安装的应用程序

java - 解析json数据时如何判断key是否存在

php - 如何在使用 JSON_FORCE_OBJECT 参数时删除 php json 编码函数中的 JSON 对象 ID

ios - HStack 中的两个按钮相互采取行动

ios - Font Awesome Swift : "Ambiguous Use of Code"

ios - UIBarButtonSystemItemPageCurl 不显示,其他系统图标显示

ios - Swift 2.1 Core Data - 使用 setValue() 预填充数据只保留最后一个