【发布时间】:2017-03-27 13:22:59
【问题描述】:
这个问题已经被问了一百次,但互联网没有帮助,主要是因为我是 swift 和编程的新手,所以我提前道歉。
我正在尝试从 json 中提取一些数据。
这是我的代码:
let request = NSMutableURLRequest(url:myUrl! as URL);
request.httpMethod = "POST";
let postString = "email=\(email)";
request.httpBody = postString.data(using: String.Encoding.utf8);
let task = URLSession.shared.dataTask(with: request as URLRequest){
data, response, error in
if error != nil {
print("error=\(error)")
return
}
var err: NSError?
do
{
let myJson = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
print(myJson)
let name = myJson["name"]
}
catch let error as NSError {
err = error
}
}
task.resume()
这是来自print(myJson)的JSON:
(
{
name = "TestTest";
}
)
但我收到以下错误:
let name = myJson["name"]
致命错误:在展开可选值时意外发现 nil (lldb)
【问题讨论】:
-
你的 JSON 顶级对象应该是一个数组或字典,你需要序列化你的对象
-
一如既往但与问题无关,
mutableContainers在 Swift 中完全没有意义。并且不要在 Swift 3 中使用NSURL / NSMutableURLRequest。有原生结构URL / URLRequest。 -
好的,谢谢您的建议!
-
你只需要使用 var 而不是 NSMutableURLRequest 来声明 URLRequest