gpt4 book ai didi

ios - 来自 URL 的 UIImage 未出现在 Swift 的异步 block 中

转载 作者:行者123 更新时间:2023-11-28 13:21:05 24 4
gpt4 key购买 nike

我正在尝试使用异步 block 将图像从 url 设置为 UIImage。我目前有一个模型类,它是我构建的 API 的包装器,它返回图像的 url。我的 View Controller 的 viewDidLoad 函数调用我的 API 模型类中的方法,然后,API 模型类找到 url 并从我的 View Controller 调用委托(delegate)方法,打印如下:

    func didReceiveNearPeopleResults(results: NSDictionary) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
var full_url = "http://s3-us-west-2.amazonaws.com/fake/112.jpg"
var url = NSURL.URLWithString(full_url)
var err: NSError?
var request: NSURLRequest = NSURLRequest(URL: url)
var urlConnection: NSURLConnection = NSURLConnection(request: request, delegate: self)
var image: UIImage?
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in

var imgData = NSData(contentsOfURL: url)
image = UIImage(data: data)
self.picture.image = image

})

})


}

但是,当应用程序运行时,我 View 中的“图片”不会更新。出于调试目的,我硬编码了应该在图像中的 url。如果我将相同的代码分配给一个按钮,它可以正常工作,并且会出现图像。感谢您的帮助。

最佳答案

您的代码中有几处错误,所以我不清楚您要做什么。 sendAsynchronousRequest 是获取图像所需的全部。由于该方法是异步的,因此不需要 dispatch_async 调用。您还有另外两个不需要的调用——您设置了一个 NSURLConnection,然后什么都不做。您还有 dataWithContentsOfURL:,您也没有对其进行任何操作。您的代码应简化为,

func didReceiveNearPeopleResults(results: NSDictionary) {
var full_url = "http://s3-us-west-2.amazonaws.com/fake/112.jpg"
var url = NSURL.URLWithString(full_url)
var image: UIImage?
var request: NSURLRequest = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
image = UIImage(data: data)
self.picture.image = image

})
}

如果这不起作用,那么您应该在该方法中放置一个日志以确保它甚至被调用。事实上,您的代码在按钮操作方法中运行,但不在此处,这意味着可能未调用此委托(delegate)方法。

关于ios - 来自 URL 的 UIImage 未出现在 Swift 的异步 block 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715751/

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