我必须编辑一个由不在项目中的人开发的iOS应用程序。
他给了我应用程序的源代码但我无法编译它。我正在使用xcode。
iOS项目包含2个包:
我更改了" Build设置" MAIN.xcodeproj: 在" Swift编译器 - 版本"我更改了#34;使用Legacy Swift语言版本"到"不" 在PODS.xcodeproj中,我将此设置设置为"是"
当我尝试构建项目时,我遇到以下问题:
Contact.swift:10:8: Module compiled with Swift 2.3 cannot be imported in Swift 3.0.1: JSONCodable.swiftmodule
当我按照stackoverflow中其他帖子的建议时,就是改变" Swift编译器 - 版本"我更改了#34;使用Legacy Swift语言版本" MAIN.xcodeproj到"是",我收到很多兼容性错误,例如:
/MAIN/Model/Data.swift:55:1: Type 'Data' does not conform to protocol 'Storable'
我尝试了所有可能的价值"使用Legacy Swift Language版本"没有成功。 我还尝试添加一个" .swift-version"文件位于只包含" 3.0.1"的根文件夹中但它没有用。
我尝试在我的podfile中添加以下行:
config.build_settings['SWIFT_VERSION'] = '3.0.1'
但它既没有效果。
我试图重新安装cocaopods,但没有任何改变。
如何将用swift 2.3编写的库导入到用swift 3.0.1编写的项目中?
谢谢
答案 0 :(得分:2)
Swift还不支持在使用不同版本编译的应用程序中使用在该语言的一个版本中编译的包。您必须重写其中一个,以便它们都使用相同的版本。
这需要快速的ABI稳定,这将在swift版本4中发生,但现在已被推迟。
答案 1 :(得分:0)
我认为唯一的解决方案是将Pod的代码从2.3转换为3.0,然后修改xcode不会自动更改的内容。 也许你可以在podfile中强制你的pod版本:
荚'〜> 3.0.1'
然后使用
重新安装pod pod install