将数据转换为布尔值

Convert Data to Bool

我有一个 api 调用,它的响应是一个包含布尔值的数据。 它 不是 一个 JSON 对象,所以 JSONDecoder 无法解码它。它是一些需要转换为 Bool.

的字节
  respose in postman: true or false

要求什么:

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

提前感谢您的帮助

这个函数应该做到:

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

自己试试:

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

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

首先总是处理error

响应 <74727565> 是一个字符串 "true"。最简单的解决方案是直接将 responseDataData

进行比较
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.