检查Parse.com中是否存在图像

时间:2015-10-17 00:20:06

标签: xcode swift parse-platform

如何检查图片中是否存在图片?

这是我的查询代码:

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

如果不包含图像,应用程序会崩溃,那么如果图像不存在,我如何检查图像是否存在并跳过它?

1 个答案:

答案 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") }