Конвертировать данные в Bool - PullRequest
0 голосов
/ 20 июня 2019

У меня есть вызов API, ответом которого являются данные, включая bool. это НЕ объект JSON, поэтому JSONDecoder не может его декодировать. это некоторые байты, которые нужно преобразовать в Bool .

  respose in postman: true or false

что запрашивается:

let dataTask = session.dataTask(with: urlRequest) { responseData, urlResponse, err -> Void in
     let data: Data = responseData
}

спасибо за вашу помощь заранее

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Прежде всего всегда обрабатывает error

Ответ <74727565> представляет собой строку "true".Самое простое решение - сравнить responseData напрямую с Data

let dataTask = session.dataTask(with: urlRequest) { responseData, _, err  in
    if let error = err { print(error); return }

    let success = responseData! == Data("true".utf8) // or == Data([116,114,117,101])
}

success, равным true, если ответ "true", в противном случае false.

1 голос
/ 20 июня 2019

Эта функция должна делать это:

func parse(data: Data) -> Bool? {
    return String(data: data, encoding: .utf8).flatMap(Bool.init)
}

Попробуйте сами:

let responseStrings = ["false", "true", "bogus"]
let responseBodies = responseStrings.map { Data($0.utf8) }

responseBodies.map(parse) // => [false, true, nil]
...