【问题标题】:unexpectedly found nil while unwrapping an Optional value while converting JSON Array在转换 JSON 数组时打开可选值时意外发现 nil
【发布时间】:2016-12-10 13:09:33
【问题描述】:

当我尝试将 Json String 转换为 Dictionary 时,它给了我致命的错误:在展开 Optional 值时意外发现 nil。

self.res = Jsn.convertStringToDictionary(self.sub)!

sub = [{"CityId":6,"CityName":"Ankara"},{"CityId":34,"CityName":"İstanbul"}]

而函数是:

func convertStringToDictionary(text: String) -> [String:AnyObject]? {
    if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
        do {
            return try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as? [String:AnyObject]
        } catch {
            print(error)
        }
    }
    return nil
}

你能帮我解决这个问题吗?先感谢您!

【问题讨论】:

  • 显示来自服务器的实际响应。
  • 函数来自stackoverflow.com/a/30480777/2227743,命名为convertStringToDictionary。您的 JSON 是一个 array 字典...
  • 另外,这个函数返回一个可选的for a reason。如果您在调用方强制解包结果而不是处理 Optional,那么您的应用当然会崩溃。
  • @EricAya 我是新来的 swift 谢谢你的回答。

标签: arrays json swift swift2


【解决方案1】:

您应该将其转换为[[String:AnyObject]] 而不是[String:AnyObject],因为它是字典数组。

尝试使用

return try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as? [[String:AnyObject]]

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多