用 swift 4.0 编译的模块无法在 swift 3.1 中导入
Module compiled with swift 4.0 cannot be imported in swift 3.1
显然我已经在 Xcode 9 beta 中构建了我的项目,但现在我只收到错误
Module compiled with swift 4.0 cannot be imported in swift 3.1
当我运行项目在Xcode 8.我的模块是Alamofire。我已尝试重新启动 Xcode 但没有任何反应 有什么解决此问题的想法吗?
您有两个选择:
Clean
项目,然后尝试 re-build
你的解决方案,看看它是否有效。
如果它不起作用并且您仍然收到相同的错误消息,请执行以下步骤,它应该对您有用:
- 打开您的
podfile
并删除 Alamofire
- 运行
pod update
- 重新添加
Alamofire
到您的 podfile
- 运行
pod update
- 完成后,
clean
您的项目和 运行 它
同样的问题,但使用的是 Carthage。答案如下:
rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
- 删除项目的
Carthage
文件夹
- 更新迦太基:
carthage update --platform iOS
瞧瞧!
我遇到了同样的问题,清理构建文件夹有帮助:
Command+Option+Shift+K
或
Product
-> Option+Clean
只删除派生数据对我有用,无需再次安装 Pod
我在一个由 Carthage 管理依赖的项目中遇到了这个问题。在我的例子中,我没有在 xcode 中设置命令行工具(输入 xcodebuild -version,你会知道你是否设置它),所以第一步是去 XCode --> Preference --> Locations 然后 select xcode 你想作为命令行工具。然后你可以按照@Domsware 上面提到的步骤重建你将要使用的所有框架。
============================================= ==
同样的问题,但使用的是 Carthage。这是答案:
rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
delete the Carthage folder for the project
Update Carthage: carthage update --platform iOS
============================================= ==
然后不要忘记删除 'Linked frameworks and libraries' 下的旧链接,并将项目下 /Carthage 文件夹中的所有框架拖到 'Linked frameworks and libraries'。
然后瞧!
对于那些使用 CocoaPods 的人,我怀疑(免责声明:我在 CocoaPods 是依赖项管理器的项目中没有遇到这个问题)解决方案是 运行 在终端中执行以下命令:
$ pod deintegrate
$ pod clean
$ pod install
您可能需要为 CocoaPod 安装 'deintegrate' 和 'clean' 工具的位置
$ sudo gem install cocoapods-deintegrate cocoapods-clean
更多详情见post
How to remove CocoaPods from a project?
在您的 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
显然我已经在 Xcode 9 beta 中构建了我的项目,但现在我只收到错误
Module compiled with swift 4.0 cannot be imported in swift 3.1
当我运行项目在Xcode 8.我的模块是Alamofire。我已尝试重新启动 Xcode 但没有任何反应 有什么解决此问题的想法吗?
您有两个选择:
Clean
项目,然后尝试 re-build
你的解决方案,看看它是否有效。
如果它不起作用并且您仍然收到相同的错误消息,请执行以下步骤,它应该对您有用:
- 打开您的
podfile
并删除Alamofire
- 运行
pod update
- 重新添加
Alamofire
到您的podfile
- 运行
pod update
- 完成后,
clean
您的项目和 运行 它
同样的问题,但使用的是 Carthage。答案如下:
rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
- 删除项目的
Carthage
文件夹 - 更新迦太基:
carthage update --platform iOS
瞧瞧!
我遇到了同样的问题,清理构建文件夹有帮助:
Command+Option+Shift+K
或
Product
-> Option+Clean
只删除派生数据对我有用,无需再次安装 Pod
我在一个由 Carthage 管理依赖的项目中遇到了这个问题。在我的例子中,我没有在 xcode 中设置命令行工具(输入 xcodebuild -version,你会知道你是否设置它),所以第一步是去 XCode --> Preference --> Locations 然后 select xcode 你想作为命令行工具。然后你可以按照@Domsware 上面提到的步骤重建你将要使用的所有框架。
============================================= ==
同样的问题,但使用的是 Carthage。这是答案:
rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
delete the Carthage folder for the project
Update Carthage: carthage update --platform iOS
============================================= ==
然后不要忘记删除 'Linked frameworks and libraries' 下的旧链接,并将项目下 /Carthage 文件夹中的所有框架拖到 'Linked frameworks and libraries'。
然后瞧!
对于那些使用 CocoaPods 的人,我怀疑(免责声明:我在 CocoaPods 是依赖项管理器的项目中没有遇到这个问题)解决方案是 运行 在终端中执行以下命令:
$ pod deintegrate
$ pod clean
$ pod install
您可能需要为 CocoaPod 安装 'deintegrate' 和 'clean' 工具的位置
$ sudo gem install cocoapods-deintegrate cocoapods-clean
更多详情见post How to remove CocoaPods from a project?
在您的 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