【发布时间】:2018-10-28 19:58:08
【问题描述】:
我尝试使用 Alamofire 下载图片,并且此图片必须附加到自定义类。但我没有那样做。图像是异步下载的,我没有解决这个问题。我的错误在哪里?
图像总是返回 nil
// 标记:自定义函数
import UIKit
import Alamofire
import AlamofireImage
class DownloadPhotoWAlamofire {
func download(imageUid:String , completion : @escaping (UIImage) -> () ) {
let url = "\(Config.fileService)file?uid=\(String(describing: imageUid))"
print("URL \(url)")
Alamofire.request(url, method: .get ).responseImage { response in
print("Image Response \(response)")
let image = response.result.value
completion(image!)
}
}
}
// 标记:在视图控制中
guard let objectElement = o as? [String:Any] else {return}
let managerName = objectElement["managerName"] as? String
let managerAvatarUid = objectElement["managerProfilePictureFileUid"] as? String
let assistantsOfDiariesUid = objectElement["assistantsOfDiariesUid"] as? String
var image:UIImage? = nil
if managerAvatarUid != nil {
DownloadPhotoWAlamofire().download(imageUid: managerAvatarUid!, completion: { (imageD) in
image = imageD
})
}
let e = AssistantInviteElement(managerName: managerName!, managerAvatarUid: managerAvatarUid, assistantsOfDiariesUid: assistantsOfDiariesUid!,avatarImage:image)
self.managerList.append(e)
【问题讨论】:
-
做
let e =&append(e)你在哪里image = imageD。 -
当我把这行放在你说的地方时,不属于 managerList
-
是的,但它是异步的,所以它只会在下载图像时发生。你不能像同步一样管理异步。在
self.manager.append(e)之后创建一个函数,并在您执行self.manager.append(e)新位置之后调用它,而不是您当前的代码。 -
是的,你是对的。它工作正常。非常感谢
标签: ios swift alamofire alamofireimage