2017-01-14 10 views
2

私はhttps://github.com/brightec/CustomCollectionViewLayoutのCustomCollectionViewLayoutを使用しています。変換Swift2 - > Swift3:エラーあり

Swift2からSwift3への変換後、Anyに関する2つのエラーが発生します。

ERROR1:

override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { 
    return self.itemAttributes[indexPath.section][indexPath.row] as! UICollectionViewLayoutAttributes 
} 

メッセージのエラー:

CustomCollectionViewLayout.swift:115:54: Type 'Any' has no subscript members

エラー2:

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { 
    var attributes = [UICollectionViewLayoutAttributes]() 
    if self.itemAttributes != nil { 
     for section in self.itemAttributes { 

      let filteredArray = (section as AnyObject).filtered(

       using: NSPredicate(block: { (evaluatedObject, bindings) -> Bool in 
        return rect.intersects(evaluatedObject.frame) 
       }) 
       ) as! [UICollectionViewLayoutAttributes] 


      attributes.append(contentsOf: filteredArray) 

     } 
    } 

    return attributes 
} 

メッセージエラー:

Value of type 'Any?' has no member 'frame'

Any/AnyObjectの問題を解決する方法はありますか?

+0

にあなたの方法の両方を置き換える私は、エラーを解決 –

答えて

0

私も同じ問題に直面しています以下のもの

override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { 
     //return self.itemAttributes[indexPath.section][indexPath.row] as! UICollectionViewLayoutAttributes 
     let arr = self.itemAttributes[indexPath.section] as! NSMutableArray 
     return arr[indexPath.row] as! UICollectionViewLayoutAttributes 
    } 


override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { 
     var attributes = [UICollectionViewLayoutAttributes]() 
     if self.itemAttributes != nil { 
      for section in self.itemAttributes { 

       let filteredArray = (section as! NSMutableArray).filtered(

        using: NSPredicate(block: { (evaluatedObject , bindings) -> Bool in 
         let a = evaluatedObject as! UICollectionViewLayoutAttributes 
         return rect.intersects(a.frame) 
        }) 
        ) as! [UICollectionViewLayoutAttributes] 


       attributes.append(contentsOf: filteredArray) 

      } 
     } 

     return attributes 
    } 
関連する問題