gpt4 book ai didi

ios - 在 Swift 中从缓冲区获取 NSData

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:51 24 4
gpt4 key购买 nike

我正在尝试获取表示为此 URL 上的缓冲区的图像:http://apiapp-env2.elasticbeanstalk.com/?nomfile=FX1wTPcaZQ1456021964555.png

在response中可以看到,图片是一个Buffer,存储在JSON里面的data对象中(我不是API的拥有者,所以没法修改)

好吧,我正在尝试将图像从缓冲区转换为 UIImage。这是我到目前为止尝试过的事情之一:

    Alamofire.request(.GET, URL, parameters: nil, encoding: .JSON)
.validate()
.response{
request, response, json, error in
if let _ = error{
callback?(image: UIImage(named: "placeholder")!)
}else if let _: AnyObject = json{
do {
let jsonObject = try NSJSONSerialization.JSONObjectWithData(json!, options:[])
let bufferData = JSON(jsonObject)["Body"]["data"].array
let imageData = NSData(bytes: bufferData!, length: bufferData!.count / sizeof(UInt32))
let downloadImage = UIImage(data:imageData)
callback?(image: downloadImage!)
} catch {
print("Error[performLoginSocialRequest]: \(error)")
}
}
}

但是 downloadImage 对象始终为 nil。以前有人遇到过这个问题吗?如果是这样,你怎么解决?

最佳答案

当您在 SwiftyJSON 的 JSON 对象上调用 .array 时,它会返回类型为 [JSON]? 的数组。虽然将其传递到 NSData init 方法似乎有效,但它实际上是通过将 JSON 对象切割成一个字节大小并存储该数据来创建数据。

您要做的是将 bufferData[JSON] 类型转换为 [UInt8]

let bufferData = JSON(jsonObject)["Body"]["data"].array
let bytes = bufferData!.flatMap { $0.uInt8 }
let imageData = NSData(bytes: bytes, length: bytes)

关于ios - 在 Swift 中从缓冲区获取 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35532341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com