如何检查图片中是否存在图片?
这是我的查询代码:
func queryFromParse(){
self.imageFiles.removeAll()
var query = PFQuery(className: "currentUploads")
query.orderByDescending("createdAt")
query.findObjectsInBackgroundWithBlock { (posts: [AnyObject]?, error: NSError?) -> Void in
if (error == nil){
// Success fetching objects
for post in posts!{
println(post)
self.imageFiles.append(post["imageFile"] as! PFFile)
self.imageText.append(post["imageText"] as! String)
}
self.collectionView.reloadData()
println(self.imageFiles.count)
}
else{
println(error)
}
}
}
如果图片无法上传到解析,它看起来像这样: Image Here
如果不包含图像,应用程序会崩溃,那么如果图像不存在,我如何检查图像是否存在并跳过它?
答案 0 :(得分:0)
我认为你的代码崩溃是因为你在块中使用强制转换(post [“imageFile”]为!PFFile并将[“imageText”]发布为!String)。但是代码中还存在另一个问题。 self.collectionView.reloadData()是一个ui代码,因此需要在主队列上完成。 findObjectsInBackgroundWithBlock方法在另一个线程中运行块,因此在函数返回后的某个时间可能会执行闭包。如果要在闭包中完成与UI相关的操作,可以使用dispatch_async获取主队列。
if let unwrappedPosts = posts as? [PFObject] {
for post in unwrappedPosts{
println(post)
if let file = post["imageFile"] as? PFFile {self.imageFiles.append(file) }
if let text = post["imageText"] as? String { self.imageText.append(text) } //the above to if lets are to be extremely safe (probably not necessary)
}
dispatch_async(dispatch_get_main_queue(), {
self.collectionView.reloadData()
print(self.imageFiles.count)
})
} else { print("found nil") }