Jor*_*oza 5 uiimageview ios nsurlsession swift
我正在使用Xcode 6 Beta 4,我正在尝试检索远程图像并将其分配给UIImageView.我正在使用NSURLSession dataTask来使这个异步.这是我的代码:
func dataTask(imageUrl: String, targetImage:UIImageView) {
let nsURL = NSURL(string: imageUrl)
let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL) {
(data, response, error) in
if !error {
NSLog("No Error!")
var image:UIImage = UIImage(data: data)
targetImage.image = image
}
else {
NSLog("Error!")
}
}
task.resume()
}
Run Code Online (Sandbox Code Playgroud)
这就是我打电话的方式:
self.dataTask("http://bicicletaspony.com/img/spn/TeamA.png", targetImage: image)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:(
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因是:'不得从后台线程执行对布局引擎的修改.
这是一个非常简单的图像分配.为什么会这样崩溃?!任何帮助都感激不尽!
dataTaskWithURL在后台运行的闭包在后台线程上调用.UIKit(与大多数其他工具包一样)只能从主线程调用.您需要在主线程上设置图像,如下所示:
if !error {
NSLog("No Error!")
var image:UIImage = UIImage(data: data)
dispatch_async(dispatch_get_main_queue(), {
targetImage.image = image
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2956 次 |
| 最近记录: |