Swift 4 - 如何在 UIAlert 中显示来自 JSON Alamofire 的错误响应

Posted

技术标签:

【中文标题】Swift 4 - 如何在 UIAlert 中显示来自 JSON Alamofire 的错误响应【英文标题】:Swift 4 - How to display in UIAlert an error response from JSON Alamofire 【发布时间】:2020-05-27 17:25:53 【问题描述】:

我被困住了,我肯定是个愚蠢的东西。

如果我从 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"

我想在这种情况下有一些东西它应该显示在 2 行:

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

所以它会根据收到的错误数显示 n 行。

感谢您的帮助

【问题讨论】:

显示您的代码以获取响应。 当 5.0 已经推出一年多并且当前版本是 5.2 时,您是否有理由指定 Swift 4? description 用于调试,仅此而已。 【参考方案1】:

Errors 是一个字典...你需要使用键来访问它

for key in errors.keys 

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

        

        print(errorString)

【讨论】:

TksjawadAli 就是这样做的。 如果您遇到任何问题,请告诉我

以上是关于Swift 4 - 如何在 UIAlert 中显示来自 JSON Alamofire 的错误响应的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮后 UIAlert 验证中的 Swift3 UITextField

尝试使用 Multipeer Connectivity Swift 3 Xcode8 传递 UIALERT 时出现多个错误

在 UIAlert 视图中显示推送通知文本

如何实现这样的表格视图?或视图控制器或uialert?迅速

多个 UIAlertController 在 Swift 中一个接一个地显示

Swift 3.0 中的 UIAlertAction 内的 UIAlertView ?