Ios 使用Swift将新图像指定给UIImageView
我使用的是Xcode 6 Beta 4,我试图检索一个远程图像并将其分配给UIImageView。我正在使用NSURLSession dataTask使其异步。这是我的密码:Ios 使用Swift将新图像指定给UIImageView,ios,uiimageview,swift,nsurlsession,Ios,Uiimageview,Swift,Nsurlsession,我使用的是Xcode 6 Beta 4,我试图检索一个远程图像并将其分配给UIImageView。我正在使用NSURLSession dataTask使其异步。这是我的密码: func dataTask(imageUrl: String, targetImage:UIImageView) { let nsURL = NSURL(string: imageUrl) let task = NSURLSession.sharedSession().dataTaskWithURL(n
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()
}
这就是我打电话的方式:
self.dataTask("http://bicicletaspony.com/img/spn/TeamA.png", targetImage: image)
这就是我得到的错误:(
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不能从后台线程执行对布局引擎的修改。”
这是一个非常简单的图像分配。为什么会这样崩溃?!任何帮助都将不胜感激!在后台线程上调用
dataTaskWithURL
结尾运行的闭包。UIKit(与大多数其他工具包一样)只能从主线程调用。您需要使用以下内容在主线程上设置映像:
if !error {
NSLog("No Error!")
var image:UIImage = UIImage(data: data)
dispatch_async(dispatch_get_main_queue(), {
targetImage.image = image
})
}
谢谢你这么快回复!你的代码也成功了!