迁移 Swift 4
直接可以参考官方的文档即可:https://swift.org/migration-guide-swift4/
简单记录我的步骤:
- 利用Xcode9的 Swift Migrator tool迁移Swift3.2
- 利用Xcode9的 Swift Migrator tool迁移Swift4
- 如果是CocoaPods,目前建议保持Swift3。Xcode9支持Swift3和Swift4的target混合编译,这也是这么快能把项目迁移Swift4的原因。https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Compatibility.html
需要手动更改的地方:
NSAttributedString
attributes 类型[String: Any]
改为[NSAttributedStringKey : Any]
Swift Migrator tool 会错误地转为
NSAttributedString.DocumentAttributeKey.documentType
改为NSAttributedString.DocumentReadingOptionKey.documentType
Swift 4: Cannot assign value of type ‘(_) -> Void’ to type ‘(() -> ())?’ 部分情况不能使用下面的简写格式。
1
2
3{ _ in
print($0)
}
Method ‘initialize()’ defines Objective-C class method ‘initialize’, which is not permitted by Swift。 关于Swift4不支持initialize()这个问题,先跳过了,项目只有工具类定义且未使用。
总结
这一次新版本迁移很轻松,API更改也不多,强烈迁移立即迁移Swift4。