2015-07-18 3 views
0

Программа запустила и отобразила изображения из синтаксиса без ошибок, когда я запустил его снова, он разбился. Мой вопрос заключается в том, что это связано с тем, что изображения не масштабируются до нужного размера пользовательской ячейки.UICollectionView и Parse Images (Swift) Нет ошибки, но сбой

вот ошибка: ширина элемента должна быть меньше ширины UICollectionView минус вставки вставки слева и справа. фатальная ошибка: Индекс массива вне диапазона

вот моя функция:

// Получаем Brands функ getBrand() {

 // Create PFQuery 
     var query:PFQuery = PFQuery(className: "BrandInfo") 

     // Call findobjects 
     query.findObjectsInBackgroundWithBlock { 
      (objects:[AnyObject]?, error: NSError?) -> Void in 

      // refresh array 
      self.brands = [String]() 
      self.pics = [UIImage]() 

      // loop through array 
      for brandObject in objects! { 

      // get PFObjects 
      let brandName:String? = (brandObject as! PFObject)["Name"] as? String 

       if brandName != nil { 
        self.brands.append(brandName!) 

       } 

      let brandPicture = brandObject["Image"] as! PFFile 
       brandPicture.getDataInBackgroundWithBlock({ (imageData:NSData?, error:NSError?) -> Void in 

        if(error == nil){ 

        let brandImage = UIImage(data: imageData!) 
         self.pics.append(brandImage) 

         println(self.pics.count) 
        } 
       }) 

    } 
     // Refresh CollectionView 
     self.collectionView.reloadData() 

} 

}

// Setting up collection view 
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.brands.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell:collectionViewCell = self.collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! collectionViewCell 

    // Get elements 
    let picToDisplay:UIImage? = pics[indexPath.row] // here is where the warning occurs 
    let dataToDisplay:String = brands[indexPath.row] 

    let imageView:UIImageView? = cell.viewWithTag(2) as? UIImageView 


    // Set labels 
    cell.brandImage.image = picToDisplay 
    cell.brandLabel.text = dataToDisplay 


    return cell 

ответ

0

сверьтесь получают одинаковое количество для брендов и массива pics.

В вашем случае вы должны добавить массив только в том случае, если вы оба brandImage и BrandName. Так что количество ваших фото и марок будет одинаковым.

+0

Да, тот же счетчик, он отображал изображения один раз, а затем, когда я запускал его снова, он падает на этой строке, чтобы позволить picToDisplay: UIImage? = pics [indexPath.row] –

Смежные вопросы