【发布时间】:2015-07-02 16:44:31
【问题描述】:
我正在尝试在 UIImageView 上设置图像属性。当我使用 UIImage 设置 .image 属性时,它每次都会抛出此错误:
“在展开可选值时意外发现 nil”
问题是我的 UIImage 不是零。
这是我设置 UIImage 的代码
func setPhotosForNewsItem(photoArray:[Photo]) {
println("Image Count: " + String(photoArray.count))
var image:UIImage = photoArray[0].photo
println(image.description)
self.newsImage.image = image
}
这是控制台输出:
图片数量:2 UIImage: 0x7fdd93c5cdd0, {1115, 1115} 致命错误: 在展开可选值 (lldb) 时意外发现 nil
我可以在我所谓的 nil UIImage 上使用 xCode 中的快速查看工具,并查看我正在尝试使用的照片。当我的 UIImage 显然不是 nil 时,为什么我会抛出 nil 错误?
更新::
似乎我没有正确地将 UIImage 存储在我的数组中。这是我下载图像并将它们存储到我的数组以便稍后解包的地方。
var relatedPhotos:[PFObject] = relations as! [PFObject]
//println(relations!)
var photoArray:[Photo] = [Photo]()
for photo in relatedPhotos {
var newPhoto = Photo()
var photoFile:PFFile = photo.objectForKey("photo") as! PFFile
newPhoto.object = photo
newPhoto.objectID = photo.objectId!
photoFile.getDataInBackgroundWithBlock({(imageData: NSData?, error: NSError?) -> Void in
if (error == nil) {
newPhoto.photo = UIImage(data:imageData!)!
//println(newPhoto.photo)
photoArray.append(newPhoto)
if photoArray.count == relatedPhotos.count {
if newObject is FieldReport {
var report = newObject as! FieldReport
report.photos = photoArray
updatedReports.append(report)
//println("Report Count 1: " + String(updatedReports.count))
}
else {
var report = newObject as! Feature
report.photos = photoArray
updatedReports.append(report)
}
if updatedReports.count == objects.count {
self.delegate?.fieldReports(updatedReports)
}
}
}
})
}
我知道这可以下载和显示照片,因为我刚刚成功使用它。对我来说,这意味着我没有正确存储 UIImage。我应该以不同的方式存储这些图像文件吗?
【问题讨论】:
-
更新:通过将 self.newsImage.image = image 更改为 self.newsImage?.image = image 我已经能够消除错误,但它仍然没有设置我的图像。
-
你的班级如何声明“照片”属性?您是否也尝试过 self.newsImage.image = image! ?还有 - 见stackoverflow.com/a/26675638/2382237
-
var photo : UIImage?
标签: ios swift null uiimageview uiimage