Swift 4 - Как отобразить в UIAlert ответ об ошибке от JSON Alamofire - PullRequest
0 голосов
/ 27 мая 2020

Я застрял, я уверен, что это глупость.

Я хотел бы отображать ошибку, если я получил ее от API.

В приведенном ниже примере у меня 2 ошибки, поэтому Я хотел бы отобразить 2 строки в своем сообщении с предупреждением.

Это то, что я получаю от Alamofire:

let swiftyJsonVar = JSON(response.result.value!):
▿ {
  "errors" : {
    "tva" : [
      "Tax must be numeric."
    ],
    "data_id" : [
      "Data id must exist"
    ]
  },
  "message" : "The given data was invalid."
}
  - rawArray : 0 elements
  ▿ rawDictionary : 2 elements
    ▿ 0 : 2 elements
      - key : "errors"
      ▿ value : 2 elements
        ▿ 0 : 2 elements
          - key : "tva"
          ▿ value : 1 element
            - 0 : Tax must be numeric.
        ▿ 1 : 2 elements
          - key : "data_id"
          ▿ value : 1 element
            - 0 : Data id must exist
    ▿ 1 : 2 elements
      - key : "message"
      - value : The given data was invalid.
  - rawString : ""
  - rawNumber : 0
  - rawNull : <null>
  - rawBool : false
  - type : SwiftyJSON.Type.dictionary
  - error : nil

Это то, что я пробовал:

SharedClass.sharedInstance.alertTitle(view: self, title: "Error".localized, message: "\(swiftyJsonVar["errors"].description)")

Но он отображает это:

"{\n  \"errors\" : {\n    \"tva\" : [\n      \"Tax must be numeric.\"\n    ],\n    \"data_id\" : [\n      \"Data id must exist\"\n    ]\n  },\n  \"message\" : \"The given data was invalid.\"\n}"

Я хотел бы иметь что-то l ie в этом случае. Он должен отображаться в двух строках:

tva: Tax must be numeric.
data_id: Data id must exist

Таким образом, он будет отображать n строк в зависимости от количества полученных ошибок.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 27 мая 2020

Ошибки - это словарь ... к нему нужно обращаться с помощью ключей

for key in errors.keys {

            if let val = errors[key] {
            errorString = errorString + "\(key):\(val)\n"
            }

        }

        print(errorString)
...