转换快捷键2->;Swift3:与任何

转换快捷键2->;Swift3:与任何,swift3,any,Swift3,Any,我正在使用来自的CustomCollectionViewLayout 从Swift2转换到Swift3后,会出现两个与任何相关的错误 错误1: override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { return self.itemAttributes[indexPath.section][indexPath.row] as! UICo

我正在使用来自的CustomCollectionViewLayout

从Swift2转换到Swift3后,会出现两个与任何相关的错误

错误1:

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

CustomCollectionViewLayout.swift:115:54:类型“Any”没有下标成员

错误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
}
消息错误:

类型为“Any”的值没有成员“frame”


有没有办法解决任何对象的问题?

我解决了错误,将这两种方法替换为下面的方法

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
    }

我也面临同样的问题