检索多个Parse图像的更合适的方法

时间:2015-12-12 01:50:36

标签: ios swift image parse-platform

下面的代码可以预期,但我想知道我是否以最佳方式检索多个解析图像。下面的代码是通过分别调用findObjectsInBackgroundWithBlock 3来检索3个不同的PFFile列。这可以浓缩吗?如果是这样,我怎样才能更好地完善我的功能?

func loadData(){
    let findDataParse = PFQuery(className: "JobListing")
    findDataParse.findObjectsInBackgroundWithBlock{
        (objects: [PFObject]?, error: NSError?) -> Void in
        if (error == nil) {
            for object in objects! {
               let userImageFile = object["ImageOne"] as! PFFile
                let userImageFile1 = object["ImageTwo"] as! PFFile
                let userImageFile2 = object["ImageThree"] as! PFFile
                userImageFile.getDataInBackgroundWithBlock {
                    (imageData: NSData?, error: NSError?) -> Void in
                    let listingImage1 = UIImage(data:imageData!)
                    userImageFile1.getDataInBackgroundWithBlock {
                        (imageData1: NSData?, error1: NSError?) -> Void in
                        let listingImage2 = UIImage(data:imageData1!)
                        userImageFile2.getDataInBackgroundWithBlock {
                            (imageData2: NSData?, error1: NSError?) -> Void in
                            let listingImage3 = UIImage(data:imageData2!)

    self.flyerImageLarge1.image = listingImage1
    self.flyerImageLarge2.image = listingImage2
    self.flyerImageLarge3.image = listingImage3
}}}}}}}

Image of how I have my PFFile's stored in parse

1 个答案:

答案 0 :(得分:1)

如果您使用数组列将文件存储在Parse中会更好,因为您可以使用循环,但您可以并行检索图像。

下面的代码显示了这一点,但实际上并没有对图像做任何事情,因为它并不清楚你要做什么;您的问题中的代码会将所有检索到的图像分配给单个UIImageView,因此实际上只会使用检索到的最后一个图像。

func loadData(){
    let findDataParse = PFQuery(className: "JobListing")
    findDataParse.findObjectsInBackgroundWithBlock{
        (objects: [PFObject]?, error: NSError?) -> Void in
        if (error == nil) {
            for object in objects! {
               let userImageFile = object["ImageOne"] as! PFFile
               let userImageFile1 = object["ImageTwo"] as! PFFile
               let userImageFile2 = object["ImageThree"] as! PFFile
               userImageFile.getDataInBackgroundWithBlock {
                    (imageData: NSData?, error: NSError?) -> Void in
                    let listingImage1 = UIImage(data:imageData!)
               }

               userImageFile1.getDataInBackgroundWithBlock {
                    (imageData1: NSData?, error1: NSError?) -> Void in
                    let listingImage2 = UIImage(data:imageData1!)
               }

               userImageFile2.getDataInBackgroundWithBlock {
                    (imageData2: NSData?, error1: NSError?) -> Void in
                    let listingImage3 = UIImage(data:imageData2!)
               }
        }
}