我收到零错误。但我不明白为什么开心。我可以通过打印获得选择的照片名称。但我不能在NSUrl中使用。你能帮帮我吗?
我的代码:
print(selectedPhoto)
if selectedPhoto != nil
{
let photoUrl = NSURL(string: "http://www.kerimcaglar.com/uploads/yemek-resimler/\(selectedPhoto)")
print("photo url: \(photoUrl)")
dataPhoto = NSData(contentsOfURL:photoUrl!)
yemekResim.image = UIImage(data: dataPhoto!)
}
else
{
print("Error")
}
答案 0 :(得分:2)
来自NSData上的Apples文档(contentsOfURL)
请勿使用此同步方法来请求基于网络的网址。对于基于网络的URL,此方法可以在慢速网络上阻止当前线程持续数十秒,从而导致用户体验不佳,而在iOS中,可能会导致应用程序被终止。
如果你的应用因此崩溃,它将被拒绝从商店。
相反,你应该使用NSURLSession。使用我的示例中的Async回调块。
强制解包选项!
也不是一个好主意,因为你会得到运行时错误,而不是使用if let
语法
请参阅下面的示例。
if let photo = selectedPhoto{
let photoUrl = NSURL(string: "http://www.kerimcaglar.com/uploads/yemek-resimler/\(photo)")
if let url = photoUrl{
NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {(data, response, error) in
if let d = data{
dispatch_async(dispatch_get_main_queue(), {
if let image = UIImage(data: d) {
self.yemekResim.image = image
}
})
}
}).resume()
}
}
}
答案 1 :(得分:0)
替换它:
let photoUrl = NSURL(string: "http://www.kerimcaglar.com/uploads/yemek-resimler/\(selectedPhoto)")
用这个:
let photoUrl = NSURL(string: "http://www.kerimcaglar.com/uploads/yemek-resimler/\(selectedPhoto!)")
(注意"!"在selectedPhoto之后)