2014-10-20 60 views
1

我有从解析获取的图像的块:阵列超出范围 - SWIFT

func getImageData(objects: [PFObject]) { 

     let downloadGroup = dispatch_group_create() 

     for object in objects { 
      let thumbNail = object["StaffPic"] as PFFile 
      dispatch_group_enter(downloadGroup) 

      thumbNail.getDataInBackgroundWithBlock({ 
       (imageData: NSData!, error: NSError!) -> Void in 
       if (error == nil) { 
        let image = UIImage(data:imageData) 
        self.logoImages.append(image) 

        dispatch_group_leave(downloadGroup) 
       } 


      }, progressBlock: {(percentDone: CInt) -> Void in 


     }) 




     } 

     dispatch_group_notify(downloadGroup, dispatch_get_main_queue()) { 

      self.arrayimages.append(self.ImageView0) 
      self.arrayimages.append(self.ImageView1) 
      self.arrayimages.append(self.ImageView2) 
      self.arrayimages.append(self.ImageView3) 
      self.arrayimages.append(self.ImageView4) 
      self.arrayimages.append(self.ImageView5) 
      self.arrayimages.append(self.ImageView6) 
      self.arrayimages.append(self.ImageView7) 
      self.arrayimages.append(self.ImageView8) 


      for var i = 0; i <= self.logoImages.count; i++ 
      { 
       var division : CGFloat = (self.ImageViewMain.frame.size.width/2.0) 
       self.arrayimages[i].image = self.logoImages[i] 
       self.arrayimages[i].layer.cornerRadius = division 
       self.arrayimages[i].clipsToBounds = true 
       self.arrayimages[i].layer.borderWidth = 2.0 
       self.arrayimages[i].layer.borderColor = self.colour.CGColor 
       self.view.addSubview(self.arrayimages[i]) 
      } 

当所有的图像被downloded它运行dispatch_group_notify并且在该块它增加了阵列图像的UIImageView阵列。但我得到致命错误:数组超出范围。 有什么建议吗?

回答

1

也许改变这一行:

for var i = 0;我< = self.logoImages.count

为VAR I = 0;我< self.logoImages.count

你的数组数是10,那么你的范围需要是0 ... 9和10将超出范围。

5

我想说的是,错误是在这里:

for var i = 0; i <= self.logoImages.count; i++ 

我认为上限应该是<

for var i = 0; i < self.logoImages.count; i++ 

你能检查?

+0

完全属实,这正是问题所在。它是因为索引数组中的对象从0开始,而count是数组中的项目数(从1开始)。 – nicael 2014-10-20 16:15:19

+0

这就是为什么你应该使用地图,过滤器,减少不循环! – mustafa 2014-10-20 16:54:20