Swift 2 Json NSDictionary to String 给出 Optional("String") 错误
Swift 2 Json NSDictionary to String gives Optional("String") Error
我正在处理 json 解析代码,当我举个例子时,post["name"] 作为?字符串给出输出 Optional("John")
我只想要输出 = John
我的代码在这里
func post(url : String, completionHandler : ((success : Int, message : String) -> Void)) {
guard let url = NSURL(string: url as String) else {
return
}
let urlRequest = NSURLRequest(URL: url)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(urlRequest, completionHandler: { (data, response, error) in
guard let responseData = data else {
return
}
guard error == nil else {
print(error)
return
}
let post: NSDictionary
do {
post = try NSJSONSerialization.JSONObjectWithData(responseData,
options: []) as! NSDictionary
} catch {
return
}
// Add user limits to Session
let name = post["name"] as? String
print(name) // Here gives output Optional("John")
let numberFromString = Int((post["success"] as? String)!)
completionHandler(success: (numberFromString)!, message: (post["message"] as? String)!)
})
task.resume()
}
你可以在这里看到我所有的工作代码。
我只想要 output = John ,
谢谢。
您正在打印一个可选值,这意味着您需要将其解包。例如
print(name!)
但如果 name
为 nil,这将崩溃。
我正在处理 json 解析代码,当我举个例子时,post["name"] 作为?字符串给出输出 Optional("John")
我只想要输出 = John
我的代码在这里
func post(url : String, completionHandler : ((success : Int, message : String) -> Void)) {
guard let url = NSURL(string: url as String) else {
return
}
let urlRequest = NSURLRequest(URL: url)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(urlRequest, completionHandler: { (data, response, error) in
guard let responseData = data else {
return
}
guard error == nil else {
print(error)
return
}
let post: NSDictionary
do {
post = try NSJSONSerialization.JSONObjectWithData(responseData,
options: []) as! NSDictionary
} catch {
return
}
// Add user limits to Session
let name = post["name"] as? String
print(name) // Here gives output Optional("John")
let numberFromString = Int((post["success"] as? String)!)
completionHandler(success: (numberFromString)!, message: (post["message"] as? String)!)
})
task.resume()
}
你可以在这里看到我所有的工作代码。 我只想要 output = John ,
谢谢。
您正在打印一个可选值,这意味着您需要将其解包。例如
print(name!)
但如果 name
为 nil,这将崩溃。