2014-09-24 62 views
0

我有一个项目对象有一个关系类,其中包含与该项目有关的几个图像。问题是我试图将这些图像添加到数组中,所以首先在循环内我将它们添加到一个数组,然后循环我将它们添加到图像数组,然后当循环完成我想要重新加载表视图。目前看起来好像是解析将多个图像添加到循环后的数组

Self.imageArray.addObject(imageDic) 

在循环之前被调用并因此没有添加到数组中。

我该怎么做?

   var relation = itemObject.relationForKey("file") as PFRelation 
       var imageQuery = relation.query() as PFQuery 
       imageQuery.findObjectsInBackgroundWithBlock { (imageObj: [AnyObject]!, error1: NSError!) -> Void in 
        if error1 == nil { 

         var imageDic = NSMutableArray() 

         for obj in imageObj { 

          var imageObject = obj as PFObject 
          var thumbnail = imageObject.objectForKey("file") as PFFile 


          thumbnail.getDataInBackgroundWithBlock { 
           (imageData: NSData!, error: NSError!) -> Void in 
           if error == nil { 
            let image = UIImage(data:imageData) 
            imageDic.addObject(image) 




           } 
          } 

         } 
         self.imageArray?.addObject(imageDic) 
         println(self.imageArray?.count) 




        } 


       } 


       self.tableView?.reloadData() 
      } 

回答

0

看到块被调用后,你的self.tableView?.reloadData()会被添加到它之前调用。

所以,我在你的代码所做cahnges如下: -

var relation = itemObject.relationForKey("file") as PFRelation 
    var imageQuery = relation.query() as PFQuery 
    imageQuery.findObjectsInBackgroundWithBlock { (imageObj: [AnyObject]!, error1: NSError!) -> Void in 
     if error1 == nil { 

      var imageDic = NSMutableArray() 

      for obj in imageObj { 

       var imageObject = obj as PFObject 
       var thumbnail = imageObject.objectForKey("file") as PFFile 

       thumbnail.getDataInBackgroundWithBlock { 
       (imageData: NSData!, error: NSError!) -> Void in 
        if error == nil { 
         let image = UIImage(data:imageData) 
         // imageDic.addObject(image) //No need of this array. 

         self.imageArray?.addObject(imageDic) 
         println(self.imageArray?.count) //simply add object into this array. 
         } 
        } 
       } 
      self.tableView?.reload() 
       } 
      } 
     } 
+0

不能与类型的参数NSData的 – gamerChristian 2014-09-24 14:02:19

+0

什么是您的应用程序的流量调用的getData?因为这是有点混乱的bcoz你有一个背景任务在另一个后台任务。 – nikhil84 2014-09-25 04:43:28

+0

另请检查getDataInBackground块是否获得了imageObj的作用域。 – nikhil84 2014-09-25 05:13:10

相关问题