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 [关闭]

在 Swift 中访问 JSON NSDictionary 对象值的简单方法?

将 JSON 字符串 UTF8 转换为 NSDictionary Swift