类型 'Int' 不符合协议 'NSCopying'

Type 'Int' does not conform to protocol 'NSCopying'

我正在使用这个 Custom Collection View Layout 实现。我能够 运行 那个 repo 中的示例就好了,但是当我将 CustomCollectionViewLayout.swift 复制到我自己的项目中时,我在方法

上收到 Type 'Int' does not conform to protocol 'NSCopying' 错误
override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
    return self.itemAttributes[indexPath.section][indexPath.row] as? UICollectionViewLayoutAttributes
}

其中 var itemAttributes 是一个 NSMutableArray!

错误是由第二个索引生成的,[indexPath.row]

有什么想法吗?我试过将相同的函数放在 swift playground 中,但没有出现任何错误..

已更新! This 是一个 swift 存根,其中保存了我的游乐场。它不执行是因为 Import UIKit,但以下内容:

let x = collectionViewLayout.itemAttributes[indexPath.section]
let y = collectionViewLayout.itemAttributes[indexPath.section][indexPath.row]
print( "x's type = \(_stdlib_getDemangledTypeName(x))")
print("x = \(x)")
print( "y's type = \(_stdlib_getDemangledTypeName(y))")
print("y = \(y)")

产量:

x's type = __NSArrayM
x = (
    "<UICollectionViewLayoutAttributes: 0x7fbe6ac041d0> index path: (<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}); frame = (0 0; 66 30); zIndex = 1024; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ac05030> index path: (<NSIndexPath: 0xc000000000200016> {length = 2, path = 0 - 1}); frame = (65 0; 63 30); zIndex = 1023; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ae1e2a0> index path: (<NSIndexPath: 0xc000000000400016> {length = 2, path = 0 - 2}); frame = (127 0; 65 30); zIndex = 1023; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ac06830> index path: (<NSIndexPath: 0xc000000000600016> {length = 2, path = 0 - 3}); frame = (191 0; 66 30); zIndex = 1023; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ae21e50> index path: (<NSIndexPath: 0xc000000000800016> {length = 2, path = 0 - 4}); frame = (256 0; 67 30); zIndex = 1023; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ad70f30> index path: (<NSIndexPath: 0xc000000000a00016> {length = 2, path = 0 - 5}); frame = (322 0; 66 30); zIndex = 1023; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ac054e0> index path: (<NSIndexPath: 0xc000000000c00016> {length = 2, path = 0 - 6}); frame = (387 0; 66 30); zIndex = 1023; ",
    "<UICollectionViewLayoutAttributes: 0x7fbe6ad72420> index path: (<NSIndexPath: 0xc000000000e00016> {length = 2, path = 0 - 7}); frame = (452 0; 65 30); zIndex = 1023; "
)
y's type = Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>
y = <UICollectionViewLayoutAttributes: 0x7fbe6ac041d0> index path: (<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}); frame = (0 0; 66 30); zIndex = 1024; 

override func layoutAttributesForItemAtIndexPath 更改为

override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { let row = indexPath.row let x : NSMutableArray = self.itemAttributes[indexPath.section] as! NSMutableArray let l = x[row] as? UICollectionViewLayoutAttributes return l }

我将在今天晚些时候 fork CustomCollectionLayoutView 并制作一个 swift2 副本