我目前正在Swift中编写一个社交网络应用程序。在我的应用程序内部,我的功能是用户可以在附加图像的时间轴上发送消息。我想能够检索图像并使用我的时间轴内的UIImageView进行预览。我编写了以下函数,但是我收到了“在展开可选值时意外发现的nil”错误。我希望社区中有人可以指出我做错了什么。
func loadImages()
{
var query = PFQuery(className: "imagesUploaded")
query.orderByDescending("objectID")
query.findObjectsInBackgroundWithBlock {
(objects:[AnyObject]!,error:NSError!) -> Void in
if error == nil {
let imagesobjects = objects as [PFObject]
for object : PFObject in objects as [PFObject] {
let image = object["filename"] as PFFile
image.getDataInBackgroundWithBlock {
(imageData:NSData!, error:NSError!) -> Void in
if error == nil {
let finalimage = UIImage(data: imageData)
self.timelineImages.append(finalimage!)
self.timelineimage.image = finalimage?
}
}
}
}
}
}
答案 0 :(得分:0)
鉴于错误发生在这些行周围:
self.timelineImages.append(finalimage!)
self.timelineimage.image = finalimage?
我建议它是finalimage
,timelineImages
或timelineimage
。
对于finalimage,我会使用if let
:
if let finalimage = UIImage(data: imageData) {
self.timelineImages.append(finalimage)
self.timelineimage.image = finalimage
}
只有在finalimage获得值时才能安全地运行代码。
如果其中一个回复为零,您可以使用?
解决此问题。因此,您的最终代码如下所示:
if let finalimage = UIImage(data: imageData) {
self.timelineImages?.append(finalimage)
self.timelineimage?.image = finalimage
}