Swift 2 错误,转换为 JSON

Posted

技术标签:

【中文标题】Swift 2 错误,转换为 JSON【英文标题】:Swift 2 error, converting to JSON 【发布时间】:2015-09-30 15:54:01 【问题描述】:

我在 swift 2 上遇到了一个错误,它很简单但我无法理解

这是我开始为 Swift 2 更新之前的代码:

func updateWeatherInfo(latitude: CLLocationDegrees, longitude: CLLocationDegrees) 
    let url = "http://api.openweathermap.org/data/2.5/forecast"
    let params = ["lat":latitude, "lon":longitude]
    println(params)

Alamofire.request(.GET, url, parameters: params)
    .responseJSON  (request, response, json, error) in
        if(error != nil) 
            println("Error: \(error)")
            println(request)
            println(response)
            self.loading.text = "Internet appears down!"
        
        else 
            println("Success: \(url)")
            println(request)
            var json = JSON(json!)
            self.updateUISuccess(json)
        
    

这里是抛线错误:

let json = JSON(json)

这是我开始后的全部功能

    func updateWeatherInfo(latitude: CLLocationDegrees, longitude: CLLocationDegrees) 
        let url = "http://api.openweathermap.org/data/2.5/forecast"
        let params = ["lat":latitude, "lon":longitude]
        print(params)

        Alamofire.request(.GET, url, parameters: params)
            .responseJSON  (request, response, json) in

                    print("Success: \(url)")
                    print(request)

                    let json = JSON(json)
                    self.updateUISuccess(json!)

        
    

updateUISuccess 需要一个 JSON 值,但目前我有一个 (Request)

这里是错误描述

经过一个建议,我尝试了这个:

.Success(let data):
                    let data_ar = data as! JSON // or NSDictionary or NSString
                    self.updateUISuccess(data_ar)

                case .Failure(let data, let error):
                    print("Request failed with error: \(error)")


                

但应用程序在 let data_ar = data as! JSON // or NSDictionary or NSString 处崩溃

【问题讨论】:

json哪里来的? 你能从 Alamofire 中删除错误吗? 我不太了解@LGL。如果您查看代码的底部块(更新到 xcode7 后我所做的),我没有错误作为参数 【参考方案1】:

变量json 看起来像一个枚举值。试试这个:

switch json 
    case .Success(let data):
        let data_ar = data as! NSArray // or NSDictionary or NSString

    case .Failure(let data, let error):
        print("Request failed with error: \(error)")


    

【讨论】:

看起来像这样吗?正如错误提示的那样,它似乎是 Rseult<AnyObject> 类型 @luk2302 是的,你是对的。现在我认为它看起来像一个枚举:) 我试过了,调用api请求时应用崩溃了,我添加了上面我试过的代码

以上是关于Swift 2 错误,转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Swift 将 JSON 转换为字典数组问题 错误代码 3840(末尾有垃圾)

Swift 解析 JSON 时出现问题:无法将“__NSCFDictionary”类型的值转换为“NSArray”错误

将 Swift 3 数组转换为 JSON

在 Swift 中将字典转换为 JSON

在 Swift 中将字典转换为 JSON

将json调用语法从Objective-C转换为Swift的正确方法是啥?