在swift4中使用未解析的标识符'json'

时间:2018-03-04 13:36:35

标签: json swift swift4

我有错误Use of unresolved identifier 'json'。刚才我正在使用swift4。 我只想获取json数据并根据返回参数返回3种类型的msg。

快速消息(このクーポンは取得済です)的意思是“它已经被保存了”。

第二个消息(マイクーポンに追加されました)的意思是“它现在被保存了”。

第三个消息(マイクーポンに追加できませんでした)意味着“app无法保存”。 >这是因为缺少注册的用户参数。

如何解决swift4中的Use of unresolved identifier 'json'问题?

@objc func saveCouponToMyCoupon() {

    let params = [
        "merchant_id" : ApiService.sharedInstance.merchant_id,
        "coupon_id" : self.coupon?.coupon_id
        ] as! [String : String]

    Alamofire.request(APIURL.k_Coupon_Publish, method: .post, parameters: params, encoding: URLEncoding(destination: .httpBody), headers: ApiService.sharedInstance.header)
        .validate(statusCode: 200..<500)
        .responseJSON { response in
            switch response.result {
            case .success(let data):
                print(response)
                print(response.result)

                if json["returnCode"] == "E70" {
                    ErrorMessage.sharedIntance.show(title: "このクーポンは取得済です。", message: "")
                }else {
                    ErrorMessage.sharedIntance.show(title: "マイクーポンに追加されました", message: "")
                }

            case .failure(let error):
                debugPrint(error)
                ErrorMessage.sharedIntance.show(title: "マイクーポンに追加できませんでした", message: "")
                break
            }
    }
}

1 个答案:

答案 0 :(得分:1)

来自Alamofire—Response Handling

if let json = response.result.value {
    print("JSON: \(json)") // serialized json response
}

在您的情况下,switch response.result … case .success(let data):是另一种获取response.result.value数据的方式。

但是,您将变量命名为data而不是json。如果您更改名称,它应该有效。

Alamofire.request(APIURL.k_Coupon_Publish, method: .post, parameters: params, encoding: URLEncoding(destination: .httpBody), headers: ApiService.sharedInstance.header)
    .validate(statusCode: 200..<500)
    .responseJSON { response in
        switch response.result {
        case .success(let json): // <-- use json instead data.
            print(response)
            print(response.result)

           // Cast json to a string/any dictionary.
           // Get the return code and cast it as a string.
           // Finally, compare the return code to "E70".
           if let dict = json as? [String: Any], let code = dict["returnCode"] as? String, code == "E70" {
                ErrorMessage.sharedIntance.show(title: "このクーポンは取得済です。", message: "")
            }else {
                ErrorMessage.sharedIntance.show(title: "マイクーポンに追加されました", message: "")
            }

        case .failure(let error):
            debugPrint(error)
            ErrorMessage.sharedIntance.show(title: "マイクーポンに追加できませんでした", message: "")
            break
        }
}