从Swift 2转换为Swift 3错误

时间:2017-03-22 17:13:37

标签: ios swift xcode swift3

我正在通过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'

我尝试使用==作为替代品,但这也不起作用。

2 个答案:

答案 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(scale​X:​y:​) CGAffineTransform初始值设定项。

Swift 3在使用C API方面有很多改进,您可能需要检查this proposal

第二期:

应该是:

let bool = indexPath == beginningIndexPath!

请注意,IndexPath Struct 符合Equatable协议,==运算符应正常运行。

如果您使用isEqual,我认为indexPathNSIndexPath的实例;我建议查看NSIndexPath 文档:

  

Swift叠加到Foundation框架提供了索引路径   结构,桥接到NSIndex Path类。索引路径   值类型提供与NSIndex路径引用相同的功能   类型,这两个可以在Swift代码中互换使用   与Objective-C API交互。这种行为类似于Swift   将标准字符串,数字和集合类型桥接到它们的   相应的基础课程。

您可以通过勾选Mutability and Foundation Value Types Proposal.

找到背后的确切原因