Ios 编译问题:两个包之间的Swift版本不兼容

Ios 编译问题:两个包之间的Swift版本不兼容,ios,swift,xcode,Ios,Swift,Xcode,我必须编辑一个iOS应用程序,它是由不再参与该项目的人开发的 他给了我应用程序的源代码,但我无法编译。我用的是xcode iOS项目包含两个包: 主要:包含以Swift 3.0.1编写的应用程序 PODS:包含用swift 2.3编写的应用程序使用的库 我更改了MAIN.xcodeproj的“生成设置”: 在“Swift编译器-版本”中,我将“使用传统Swift语言版本”更改为“否” 在PODS.xcodeproj中,我将此设置设置为“是” 当我尝试构建项目时,我遇到以下问题: Contac

我必须编辑一个iOS应用程序,它是由不再参与该项目的人开发的

他给了我应用程序的源代码,但我无法编译。我用的是xcode

iOS项目包含两个包:

  • 主要:包含以Swift 3.0.1编写的应用程序
  • PODS:包含用swift 2.3编写的应用程序使用的库
我更改了MAIN.xcodeproj的“生成设置”: 在“Swift编译器-版本”中,我将“使用传统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编译器-版本”时,我更改了“使用传统Swift语言版本” 如果将MAIN.xcodeproj改为“是”,我会遇到很多兼容性错误,例如:

/MAIN/Model/Data.swift:55:1: Type 'Data' does not conform to protocol 'Storable'
我尝试了“使用遗留的Swift语言版本”的所有可能的价值,但没有成功。 我还试图在根文件夹中添加一个“.swift version”文件,该文件只包含“3.0.1”,但没有起作用

我试图在我的播客文件中添加以下内容:

 config.build_settings['SWIFT_VERSION'] = '3.0.1'
但它也不起作用

我试图重新安装cocaopods,但没有任何改变

如何将用swift 2.3编写的库导入到用swift 3.0.1编写的项目中


谢谢

Swift还不支持在使用不同版本编译的应用程序中使用一种语言版本编译的程序包。您必须重写其中一个,以便它们都使用相同的版本


这要求swift ABI保持稳定,swift版本4将实现这一点,但现在已被延迟。

swift尚不支持在使用不同版本编译的应用程序中使用以该语言的一个版本编译的包。您必须重写其中一个,以便它们都使用相同的版本


这就要求swift ABI保持稳定,swift版本4将要实现这一点,但现在已经延迟了。

我认为唯一的解决方案是将POD的代码从2.3转换为3.0,然后修改xcode没有自动更改的内容。 也许您可以在pod文件中强制使用您的pod版本:

吊舱“~>3.0.1”

然后使用重新安装吊舱

 pod install

我认为唯一的解决方案是将POD的代码从2.3转换为3.0,然后修改xcode没有自动更改的内容。 也许您可以在pod文件中强制使用您的pod版本:

吊舱“~>3.0.1”

然后使用重新安装吊舱

 pod install

你需要重新安装PodI重新安装几次都没有成功,我试图在podfile中强制安装swift版本,但没有成功。请按照以下步骤操作:转到编辑>>转换>>当前SWIFTSyntaxi尝试了它,但我有很多东西需要手动修改。如果这是您重新安装POD的唯一方法,我将尝试进行所有更改。我多次重新安装都没有成功,我尝试在POD文件中强制安装swift版本,但没有成功。请执行以下步骤:转到编辑>>转换>>当前SWIFTSyntaxi尝试了它,但我有很多东西需要手动修改。如果这是唯一的方法,我会尝试进行所有的更改是的,但是项目之前已经编译过,应用程序已经在商店中了。。所以我认为我可以编译它,除非那个家伙给了我错误的来源。是的,但是这个项目以前编译过,这个应用已经在商店里了。。所以我认为我可以编译它,除非那个家伙给了我错误的资料来源。。