将数据转换为布尔值
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"。最简单的解决方案是直接将 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
.
我有一个 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"。最简单的解决方案是直接将 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
.