2017-02-08 8 views
-3

SwiftyJsonに問題がありました.Jsonに「アクセスが拒否されました」と印刷されている値があるかどうかを確認しようとしていますが、チェックしていません。私が取得swiftyJsonエラー処理

JSONレスポンスは、次のとおり

{ 誤差= { コード= "-32002"。 message = "アクセスが拒否されました"; }; id = 1; jsonrpc = "2.0"; }

リクエスト方法:

private func makeWebServiceCall (urlAddress: String, requestMethod: HTTPMethod, params:[String:Any], completion: @escaping (_ JSON : Any) ->()) { 

    manager.session.configuration.timeoutIntervalForRequest = 1 


    manager.request(urlAddress, method: requestMethod, parameters: params, encoding: JSONEncoding.default).responseJSON{ response in 

     print(response.timeline) 

     switch response.result { 
     case .success(let value): 

      let json = JSON(value) 

      if (json["error"].arrayValue.contains("Access denied")) { 
       print("Access denied") 
      } 

      if let jsonData = response.result.value { 


       completion(jsonData) 
      } 


     case .failure(let error): 

       completion("Failure Response: \(error)") 



} 
+0

'JSON [ "エラー"]は' '{}辞書を含んでいます。配列は '[] 'で表されます – vadian

答えて

2

json["error"]DictionaryArrayではなく、あなたがその辞書からmessage値にアクセスする必要があります。

if let message = json["error"]["message"].string, message == "Access denied" { 
    print("Access denied") 
} 
+0

ありがとう、これは私が必要なものです! –

+0

@EgleMatutyteようこそメイト:) –

1

このようにしてみてください、

if let message = json["error"]["message"].rawString(), message == "Access denied" { 

    print(message) 
}