Alamofire обрабатывает реакцию - PullRequest
0 голосов
/ 03 марта 2020

Я использую Alamofire в своем приложении для работы с сетевыми запросами вместе с Object Mapper. Это нормально, когда у меня есть JSON ответ, но теперь мне нужно обработать ответ, который просто возвращает 200 в качестве кода состояния, и значение равно true.

Я не знаю, как сопоставить его со значением Swift Bool , у меня просто есть Data? в ответе, и я не могу понять, как преобразовать его в тип Swift Bool.

Итак, у меня есть только Alamofire public struct DataResponse<Value> {...} в качестве ответа.

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Решите это следующим образом - приведите Data к String, затем попытайтесь сформировать Bool из необработанного строкового значения.

.request(request: apiRequest,
               completionSuccess: { response  in
                guard let data = response.value,
                      let str = String(data: data, encoding: .utf8),
                      let resultValue = str.toBool() else {
                        completion(.failure(APIError.emptyData))
                        return
                }
                completion(Result.success(resultValue))

Расширение строки:

extension String {
  func toBool() -> Bool?{
    if self == "true" {
      return true
    }
    if self == "false" {
      return false
    }
    return nil
  }
}
0 голосов
/ 03 марта 2020

Можете ли вы использовать responseJSON вместо этого и привести значение ответа к Bool?

if let myBool = response.value as? Bool {
...
}
...