我正在尝试使用以下代码访问api。 我收到错误"致命错误:在打开一个Optional值时意外发现nil"当我试图解析json时。
我不确定为什么会发生错误。 数据不是零。
var urlFull = NSURL(string: url)!
var urlrequest = NSURLRequest(URL: urlFull)
let queue:NSOperationQueue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(urlrequest, queue: queue, completionHandler: {
(response, data, error) -> Void in
println(response)
println(data)
println(error)
if let anError = error {
println(error)
} else {
var jsonError: NSError? = nil
let post = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as NSDictionary
if let aJSONError = jsonError {
println("Error parsing")
} else {
println("The post is: " + post.description)
}
}
})
答案 0 :(得分:0)
问题在于您的强迫演员:as NSDictionary
。无论返回什么,都无法投放到NSDictionary
。
在解析JSON时,您应始终使用可选的强制转换(as?
)和可选的展开(if let…
):
let post = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as? NSDictionary
if let post = post {
// it worked! parse post
} else {
// it's not a dictionary.
println(post)
// see what you have and debug from there
}