【问题标题】:Parse Boolean Response using AFNetworking使用 AFNetworking 解析布尔响应
【发布时间】:2019-04-21 12:56:29
【问题描述】:

我在我的 Swift 应用中使用 AFNetworking。我使用AFHTTPRequestSerializer 发出POST 请求并使用AFHTTPResponseSerializer 接收响应。 HTTP 状态码是 200,我得到了成功的响应。

但是,我无法解析布尔响应。在 Postman 上,响应为布尔值(真或假),但我无法在我的代码中识别响应对象类型。请参阅显示响应对象的附图。

对邮递员的回应

尝试如下解析,但IF条件不满足。

if let isSuccess = response as? Bool {
     print(isSuccess)
}

【问题讨论】:

  • 只是出于好奇,如果您的应用是用 Swift 编写的,为什么不使用 Alamofire?
  • 刚习惯使用 AFNetworking :) 另外,这是一个团队项目,不能自己做决定。
  • 你能打印响应并分享输出吗?您可以分享 AFNetworking 推断除 Boolean 之外的其他类型的代码吗?
  • @Kamran:在打印响应时,我得到:

标签: ios swift afnetworking


【解决方案1】:

服务器将“真”或“假”作为 JSON 发送,这本质上是无效的 JSON。从今以后,如果我尝试使用AFJSONResponseSerializer,它会报错,因为返回的 JSON 格式不正确。

所以我不得不使用AFHTTPResponseSerializer 将响应返回为Data。然后我将此Data 转换为String 以检索“真”或“假”文本。

if let isSuccessData = response as? Data {
    if let isSuccessText = String(data: isSuccessData, encoding: .utf8) {
        print(isSuccessText)
    }
}

【讨论】:

    【解决方案2】:

    看起来您的response 对象的类型是Any?。也许尝试以安全的方式将其转换为布尔值:

    if let response = response as? Bool {
        // Do something with the response
    }
    

    在 if 语句中放置一个断点,以便于查看条件是否满足。

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2013-06-24
      相关资源
      最近更新 更多