gpt4 book ai didi

swift - 如何使用带有授权 token 的 KingFisher 或 AlamofireImage 库?

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

我有一个带有 customCells 的 tableView,我需要从 REST API(使用授权 token 访问)加载图片。由于我是 swift 的菜鸟,我遇到了一些库,KingFisher 或 AlamofireImage 似乎是用于异步加载和缓存从 API 调用检索到的图像的好库。

但是因为我这里的 API 有一个访问 token ,如何将它传递到这个请求中?

//image handling with kingfisher
if let imgView = cell.schoolCoverImage {
imgView.kf_setImageWithURL(
NSURL(string: "")!,
placeholderImage: nil,
optionsInfo: nil,
progressBlock: nil,
completionHandler: { (image, error, CacheType, imageURL) -> () in
self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) }
)
}

例如在 Alamofire 中有可以传递访问 token 的字段 header

 //Sample API call with Alamofire
Alamofire.request(
.GET,
baseURL+schools+nonAcademicParameter,
headers: accessToken
)
.responseJSON { response in
switch response.result {
case .Success(let value):
completionHandler(value, nil)
case .Failure(let error):
completionHandler(nil, error)
}
}

但是对于 AlamofireImage,字段标题似乎不可用

//Image request with AlamofireImage
Alamofire.request(
.GET,
"https://httpbin.org/image/png"),
headers: ["Authorization" : "Bearer fbzi5u0f5kyajdcxrlnhl3zwl1t2wqaor"] //not available
.responseImage { response in
debugPrint(response)

print(response.request)
print(response.response)
debugPrint(response.result)

if let image = response.result.value {
print("image downloaded: \(image)")
}
}

最佳答案

您可以只使用请求修饰符并将其作为选项传递给 Kingfisher 的设置图像方法。像这样:

let modifier = AnyModifier { request in
var r = request
r.setValue("Bearer fbzi5u0f5kyajdcxrlnhl3zwl1t2wqaor", forHTTPHeaderField: "Authorization")
return r
}
imageView.kf.setImage(with: url, placeholder: nil, options: [.requestModifier(modifier)])

参见 wiki page翠鸟的更多信息。

关于swift - 如何使用带有授权 token 的 KingFisher 或 AlamofireImage 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38464862/

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