17

显然我已经设法在 Xcode 9 beta 中构建我的项目,现在我只得到错误

swift 4.0编译的模块不能导入swift 3.1

当我在 Xcode 8 中运行项目时。我的模块是 Alamofire。我试图重新启动 Xcode 但没有任何想法如何解决这个问题?

4

6 回答 6

24

你有两个选择:

Clean项目,然后尝试re-build你的解决方案,看看它是否有效。

如果它不起作用并且您仍然收到相同的错误消息,请执行以下步骤,它应该适合您:

  1. 打开你的podfile并删除Alamofire
  2. pod update
  3. 重新添加Alamofire到您的podfile
  4. pod update
  5. 完成后,clean您的项目并运行它
于 2017-06-10T15:56:38.780 回答
19

同样的问题,但使用迦太基。这是答案:

  • rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
  • 删除Carthage项目的文件夹
  • 更新迦太基:carthage update --platform iOS

瞧!

于 2017-08-02T04:20:18.157 回答
5

我遇到了同样的问题,清理构建文件夹有帮助:

Command+Option+Shift+K

或者

Product->Option+Clean

于 2017-08-08T14:39:52.040 回答
2

只需删除派生数据对我有用,无需再次安装 Pod

于 2017-09-02T08:11:56.700 回答
0

我在 Carthage 管理依赖项的项目中遇到了这个问题。在我的例子中,我没有在 xcode 中设置命令行工具(输入 xcodebuild -version,你会知道你是否设置了它),所以第一步是去 XCode --> Preference --> Locations 然后选择要用作命令行工具的 xcode。然后你可以按照上面提到的@Domsware 的步骤来重建你将要使用的所有框架。

================================================

同样的问题,但使用迦太基。这是答案:

rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
delete the Carthage folder for the project
Update Carthage: carthage update --platform iOS

================================================

然后不要忘记删除“链接的框架和库”下的旧链接,并将所有框架从您项目下的 /Carthage 文件夹拖到“链接的框架和库”。

然后瞧!

对于那些使用 CocoaPods 的人,我怀疑(免责声明:我在 CocoaPods 是依赖项管理器的项目中没有遇到这个问题)解决方案将在终端中运行以下命令:

$ pod deintegrate
$ pod clean
$ pod install

您可能需要为 CocoaPod 安装“deintegrate”和“clean”工具的地方

$ sudo gem install cocoapods-deintegrate cocoapods-clean

更多详细信息,请参阅 如何从项目中删除 CocoaPods?

于 2018-02-18T18:42:11.113 回答
0

在 pod 文件的末尾添加以下行:

post_install do |installer|
    print "Setting the default SWIFT_VERSION to 4.0\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.0'
    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
于 2018-11-30T15:31:56.000 回答