Swift 2 Json NSDictionary to String 给出 Optional("String") 错误 [重复]
Posted
技术标签:
【中文标题】Swift 2 Json NSDictionary to String 给出 Optional("String") 错误 [重复]【英文标题】:Swift 2 Json NSDictionary to String gives Optional("String") Error [duplicate] 【发布时间】:2016-02-08 16:14:36 【问题描述】:我有工作 json 解析代码,当我举个例子时,post["name"] as?字符串给出输出 Optional("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 ,
谢谢。
【问题讨论】:
当然它给出了一个可选的。 您的代码完全按照您的指示行事。此外,你的 Do-Try-Catch 是错误的(强制下垂可能会崩溃,它不会被 catch 抓住)。您需要进一步研究 Swift Optionals 的基础知识:developer.apple.com/library/ios/documentation/Swift/Conceptual/… @dzk 没有人我尝试但不改变 @EricD。我该如何更改该代码 Eric 任何想法? 【参考方案1】:您正在打印一个可选值,这意味着您需要打开它。例如
print(name!)
但如果 name
为 nil,这将崩溃。
【讨论】:
是的!谢谢,我会尽快批准,如果为零,我们如何捕捉它? @EricD。也谢谢你,你的想法太好了,没问题。 @EricD。同意,应该关闭。 如果 name 为 nil 我们如何捕捉?有什么想法吗?以上是关于Swift 2 Json NSDictionary to String 给出 Optional("String") 错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中从 NSDictionary 生成 JSON 数据
如何在 swift 中使用 NSDictionary 访问 JSON 子字段
使用 Swift 将 JSON 字符串转换为 NSDictionary
将 NSARRAY 转换为 NSDictionary 以用作 JSON 序列化 swift4 Xcode 9 [关闭]