我正在使用此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]
生成。
有什么想法吗?我已经尝试将相同的功能放在一个快速的操场上,并没有出现任何错误。
已更新! This是一个swiftstub w /我的操场保存在其中。由于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;
答案 0 :(得分:-1)
将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
}
我今天晚些时候分叉CustomCollectionLayoutView并制作swift2副本