Ios 将用Swift 3.0编写的模块迁移到Swift 2.3?

Ios 将用Swift 3.0编写的模块迁移到Swift 2.3?,ios,swift,module,migration,cocoapods,Ios,Swift,Module,Migration,Cocoapods,我目前工作的公司支持用Swift 2.3编写的遗留产品(我不同意)。目前,他们希望继续推出支持传统版本的功能,因此,我目前正在考虑一个用Swift 3.0编写的pod 我试图通过安装Xcode 7.3.1将语法转换回Swift 2.3,希望能够迁移该代码。不幸的是,由于这是一个用Swift 3.0编写的模块,我的努力是徒劳的 虽然我不反对在Swift 2.3中的模块中编写代码,但我没有任何建议,但我知道从长远来看,我将看到一个乏味的过程。我应该采取什么步骤将使用最新版本的Swift编写的模块迁移

我目前工作的公司支持用Swift 2.3编写的遗留产品(我不同意)。目前,他们希望继续推出支持传统版本的功能,因此,我目前正在考虑一个用Swift 3.0编写的pod

我试图通过安装Xcode 7.3.1将语法转换回Swift 2.3,希望能够迁移该代码。不幸的是,由于这是一个用Swift 3.0编写的模块,我的努力是徒劳的


虽然我不反对在Swift 2.3中的模块中编写代码,但我没有任何建议,但我知道从长远来看,我将看到一个乏味的过程。我应该采取什么步骤将使用最新版本的Swift编写的模块迁移回2.3版?

首先,您可以使用Xcode 8执行此操作。选择每个方案,然后在“生成设置”中将“使用旧版swift版本”设置为“是”。编译然后运行。斯威夫特将开始出现很多错误。例如,此代码(在swift 3中):


在swift 2中。您必须手动修复swift所说的所有错误,因此您需要清楚地了解旧的swift语法。

首先,您可以使用Xcode 8来完成此操作。选择每个方案,然后在“生成设置”中将“使用旧版swift版本”设置为“是”。编译然后运行。斯威夫特将开始出现很多错误。例如,此代码(在swift 3中):


在swift 2中。您必须手动修复swift所说的所有错误,因此您需要清楚了解旧的swift语法。

您试图访问的pod是否有旧版本的swift 2?例如,我在一个为其设置依赖项的项目中意外地使用了为Swift 2.3设计的旧版本Alamofire,我得到了旧版本的AF,因为我在pod文件中复制了一些关于该版本的旧代码。我相信如果旧模块存在,您仍然可以访问它。@Pierce不,它没有。它是用Swift 3.0编写的。我试图寻找有一个旧版本可用的豆荚,但这个豆荚似乎根本没有。我确实联系了存储库的贡献者,他们确实提出用Swift 2.3编写一个,但我担心这对他们来说可能不可行,我真的不希望他们对任何人都有用。我想尝试以我能做到的最好的方式操纵这个障碍,因为它是我正在工作的项目中唯一一个能够满足重大要求的可用吊舱。您试图访问的吊舱是否有一个旧版本的Swift 2?例如,我在一个为其设置依赖项的项目中意外地使用了为Swift 2.3设计的旧版本Alamofire,我得到了旧版本的AF,因为我在pod文件中复制了一些关于该版本的旧代码。我相信如果旧模块存在,您仍然可以访问它。@Pierce不,它没有。它是用Swift 3.0编写的。我试图寻找有一个旧版本可用的豆荚,但这个豆荚似乎根本没有。我确实联系了存储库的贡献者,他们确实提出用Swift 2.3编写一个,但我担心这对他们来说可能不可行,我真的不希望他们对任何人都有用。我想用我能做到的最好的方式来克服这个障碍,因为这是我正在从事的项目中唯一一个可以满足重大需求的pod。那么,你是说我可以将上述的pod转换为具有Swift 3.0语法的pod,并尝试在Swift 2.3中通过在中更改旧版本的布尔值来迁移它是否更改生成设置并继续修复每个错误?这肯定是一个乏味的过程,但值得一试。谢谢是的,如果你想支持legacy swiftIt,你可以这样做,但我仍然在努力解决一些问题。由于Swift 3中的某些sytax附加组件在Swift 2.3中可能无法翻译,因此将我正在处理的模块迁移到Swift 2.3可能会变得不可能。因此,虽然你的答案可能是正确的,但也可能是间接的@是的,很不幸。Swift 2.2引入了类似于
#if Swift(>=2.3)/*这在Xcode 8/Swift 2.3/iOS 10*/#else/*上编译,但是它可以让使用Swift 3的人使用Swift 2.3不可用的功能,这是一种折衷。看。你是说我可以将上述内容添加到具有Swift 3.0语法的pod中,并尝试通过在构建设置中更改旧版本的布尔值,将其迁移到Swift 2.3中,然后继续修复每个错误?这肯定是一个乏味的过程,但值得一试。谢谢是的,如果你想支持legacy swiftIt,你可以这样做,但我仍然在努力解决一些问题。由于Swift 3中的某些sytax附加组件在Swift 2.3中可能无法翻译,因此将我正在处理的模块迁移到Swift 2.3可能会变得不可能。因此,虽然你的答案可能是正确的,但也可能是间接的@是的,很不幸。Swift 2.2引入了类似于
#if Swift(>=2.3)/*这在Xcode 8/Swift 2.3/iOS 10*/#else/*上编译,但是它可以让使用Swift 3的人使用Swift 2.3不可用的功能,这是一种折衷。看见
SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 10)
SKAction.rotateByAngle: CGFloat(M_PI_2), duration: 10)