【问题标题】:NSJSONSerialization : unexpectedly found nil while unwrapping an Optional valueNSJSONSerialization:在展开可选值时意外发现 nil
【发布时间】:2016-03-29 16:58:49
【问题描述】:

通常以下代码可以正常工作,但有时我认为 JSON 返回 nil 并遇到致命错误。如果数据为零,我该如何处理。

我在以下行遇到 EXC_BAD_INSTRUCTION 错误:

let profileJsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSArray

感谢您的帮助。

do {
        let profileJsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSArray

        if let parseJSONArray = profileJsonArray {                
            self.myProfileinfo = parseJSONArray

                    let name: String? = self.myProfileinfo[0].valueForKey("fullname") as? String
                    let messsage: String? = self.myProfileinfo[0].valueForKey("message") as? String
                    let infourl: String! = self.myProfileinfo[0].valueForKey("thumb") as? String
                    let prourl: String! = self.myProfileinfo[0].valueForKey("prothumb") as? String
                    let email: String? = self.myProfileinfo[0].valueForKey("email") as? String ...

【问题讨论】:

  • 您是否尝试从网络响应中读取?如果是这样,请在使用data之前检查error
  • 是的,它来自 PHP 文件
  • 可能的数据 = 无。

标签: ios swift nsjsonserialization


【解决方案1】:

读取网络响应时,应先检查是否有错误。

NSSession 例如:

let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
    if error {
        // Deal with error, e.g.
        print(error)
    }
    else {
        do {
            // Use data or response
            let profileJsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSArray
            // ....
        }
        catch {
            // Deal with error
        }
    }
})
task.resume();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2016-10-18
    • 2017-04-09
    • 2018-09-22
    • 2016-06-26
    • 2016-03-12
    相关资源
    最近更新 更多