将数据转换为布尔

时间:2019-06-20 11:36:35

标签: ios swift nsdata

我有一个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
}

感谢您的提前帮助

2 个答案:

答案 0 :(得分:2)

首先始终处理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])
}
如果响应为“ true”,则

successtrue,否则为false

答案 1 :(得分:1)

此功能应执行以下操作:

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]