Xcode 9 Release Notes表示支持Swift 3编译:
Swift 4和Swift 3 ,Swift 4和Swift 3目标的一个编译器可以在同一个项目中一起编译。
我已经安装了Xcode 9 beta。 但是,当我按下Build时,它会显示一堆错误。在Xcode 9中使用Swift 3时是否需要做一些特殊的准备工作?
UPD:
使用Swift 3.1编译的模块无法在Swift 4.0中导入
答案 0 :(得分:58)
答案 1 :(得分:9)
以上所有答案都回答错误的问题。使用Xcode 9时,您正在使用Swift 4编译器(即使您使用它编译Swift 3代码)来解决此问题,使用适当的编译器/ Xcode重新编译。
如果您尝试通过命令行执行此操作,则可以使用sudo xcode-select -switch
在xcode版本之间切换。祝你好运!
答案 2 :(得分:4)
您可以根据目标确定何时以及是否要迁移 当对您的项目有意义时。迁移到Swift 4.2时 绝对值得鼓励,这不是一个全有或全无的过程,就像Swift 3一样, 4、4.2目标可以共存并链接在一起。
您希望与项目版本具有不同的cocoapod版本,然后应在pod文件末尾进行以下更改:
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.firstLineHeadIndent = 10
// Swift 4.2++
label.attributedText = NSAttributedString(string: "Your text", attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
// Swift 4.1--
label.attributedText = NSAttributedString(string: "Your text", attributes: [NSAttributedStringKey.paragraphStyle: paragraphStyle])
有时甚至在运行pod更新后,您的xcode都会强制更新cocoapod pod项目的版本,在这种情况下,请选择cocoapod pod项目并在构建设置中更改swift版本。
答案 3 :(得分:3)
我有同样的问题 - (我安装了pod,swift版本是3x,我的项目的swift版本是Swift 4.所以我有很多编译器错误。后来我把Swift版本4改为3.2并尝试构建项目,我再次遇到编译器错误。我认为这是因为我运行pod安装而我的项目是在Swift 4中。)
答案 4 :(得分:2)
Xcode 9需要使用Swift 3.2或更高版本构建框架。转到https://github.com/emaloney/CleanroomLogger,然后点击下载ZIP。在Xcode中打开xcodeproj 9.按⌘B。 CleanroomLogger.framework从红色变为黑色。将框架拖到项目中。请参阅相关问题:Realm issue with Swift 3.1