我正在通过this教程,在使用CoreData的tableview单元格上使用手势。
我把它的大部分转换为有两个地方,我遇到了一个问题。
1
Swift2:
snapshot.transform = CGAffineTransformMakeScale(1.05, 1.05);
斯威夫特3:
snapshot.transform = CGAffineTransform.scaledBy(1.05, 1.05)
这是我得到的错误:
Use of instance member 'scaledBy' on type 'CGAffineTransform'; did you mean to use a value of type 'CGAffineTransform' instead?
这是第二期。
Swift 2:
let bool:Bool = indexPath!.isEqual(beginningIndexPath) as Bool
斯威夫特3:
let bool:Bool = indexPath!.isEqual(beginningIndexPath) as Bool
错误:
Value of type 'IndexPath' has no member 'isEqual'
我尝试使用==作为替代品,但这也不起作用。
答案 0 :(得分:3)
第一个问题,使用初始化程序:
CGAffineTransform(scaleX: 1.05, y: 1.05)
第二个问题,请使用elementsEqual
:
let bool = indexPath!.elementsEqual(beginningIndexPath)
答案 1 :(得分:0)
第一期:
应该是:
snapshot.transform = CGAffineTransform(scaleX: 1.05, y: 1.05)
您应该使用init(scaleX:y:) CGAffineTransform初始值设定项。
Swift 3在使用C API方面有很多改进,您可能需要检查this proposal。
第二期:
应该是:
let bool = indexPath == beginningIndexPath!
请注意,IndexPath Struct 符合Equatable协议,==
运算符应正常运行。
如果您使用isEqual
,我认为indexPath
是NSIndexPath的实例;我建议查看NSIndexPath
类文档:
找到背后的确切原因Swift叠加到Foundation框架提供了索引路径 结构,桥接到NSIndex Path类。索引路径 值类型提供与NSIndex路径引用相同的功能 类型,这两个可以在Swift代码中互换使用 与Objective-C API交互。这种行为类似于Swift 将标准字符串,数字和集合类型桥接到它们的 相应的基础课程。