ios-如何在Xcode 9上构建Swift 3项目?

Xcode 9发行说明说,支持Swift 3编译:

一个Swift 4和Swift 3,Swift 4和Swift 3目标的编译器可以在同一项目中一起编译。

我已经安装了Xcode 9 beta。但是,当我按Build时,它会显示很多错误。 在Xcode 9中使用Swift 3时需要做一些特殊的准备吗?

UPD:Module compiled with Swift 3.1 cannot be imported in Swift 4.0

使用Swift 3.1编译的模块无法在Swift 4.0中导入

Exey Panteleev asked 2020-08-11T22:07:59Z
5个解决方案
60 votes

选择目标,转到Build Settings > Swift Language Version

enter image description here

vadian answered 2020-08-11T22:08:05Z
10 votes

以上所有答案都回答了错误的问题。 使用Xcode 9时,您使用的是Swift 4编译器(即使您使用它来编译Swift 3代码)也可以解决此问题,请使用适当的编译器/ Xcode重新编译。

如果您尝试通过命令行执行此操作,则可以使用sudo xcode-select -switch在xcode版本之间进行切换。 祝好运!

Jeremie answered 2020-08-11T22:08:30Z
4 votes

Xcode 10.1和Swift 4.2的更新

Swift 3、4和4.2目标可以共存并链接在一起。

您可以根据目标确定何时以及是否要迁移 当对您的项目有意义时。 迁移到Swift 4.2时 绝对值得鼓励,这不是一个全有或全无的过程,就像Swift 3一样, 4、4.2目标可以共存并链接在一起。

不同的cocoapod和不同的项目版本也可以共存。

与项目版本相比,您希望有不同的cocoapod版本,那么您应该在pod文件的末尾进行以下更改:

post_install do |installer|
    print "Setting the default SWIFT_VERSION to 4.2\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.2'
    end

    installer.pods_project.targets.each do |target|
        if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}"
            print "Setting #{target}'s SWIFT_VERSION to 3.0\n"
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.0'
            end
        else
            print "Setting #{target}'s SWIFT_VERSION to Undefined (Xcode will automatically resolve)\n"
            target.build_configurations.each do |config|
                config.build_settings.delete('SWIFT_VERSION')
            end
        end
    end
end

有时,即使在运行pod更新后,您的xcode也会强制更新cocoapod pod项目的版本,在这种情况下,请选择cocoapod pod项目并在构建设置中更改swift版本。

Shubham Mishra answered 2020-08-11T22:09:12Z
3 votes

我遇到了同样的问题-(我安装了Swift版本是3x的pod,而我的项目的swift版本是Swift4。所以我遇到了很多编译器错误。后来我将Swift版本的形式从4更改为3.2,并尝试构建项目, 编译器错误。我之所以这样认为是因为我的项目在Swift 4中时运行了pod install。)

  • 首先,您需要从构建设置中更改“快速语言版本”。
  • 如果您安装了任何Pod,则仅更改“ Swift Language Version”将无济于事。 您可能需要为项目运行pod install。
Jeni Khant answered 2020-08-11T22:09:42Z
2 votes

Xcode 9需要使用Swift 3.2或更高版本构建框架。 转到[https://github.com/emaloney/CleanroomLogger],然后单击下载ZIP。 在Xcode 9中打开xcodeproj。按⌘B。 CleanroomLogger.framework从红色变为黑色。 将框架拖到您的项目中。 查看相关问题:Swift 3.1的领域问题

build it

Chris Woolfe answered 2020-08-11T22:10:02Z
translate from https://stackoverflow.com:/questions/44389591/how-to-build-swift-3-project-on-xcode-9