使用Xcode8和一个使用cocoapods的swift 2.3项目
我有一个项目,其中写入的代码量很少,我认为是swift 2.3它包含和app扩展也写在swift 2.3中,并使用2个Cocoapods:SwiftyJSON
和MMWormhole
。在下载Xcode 8.3 beta后,迁移程序运行,并且我在SwiftyJSON
中包含的一个主要swift文件中留下了近100个编译器错误。使用Xcode8和一个使用cocoapods的swift 2.3项目
基本上我想知道是否有一种方法可以在Xcode8中给出这些细节。我很高兴将自己的代码更新到swift3,但是我不控制cocoapods(MMWormHole在Objective-C中,所以我认为Xcode会将它转换为它需要的Swift版本,因为它不会发出编译器错误)。我可以告诉Xcode全局使用swift 2.3吗?
根据我在启动工作区时的经验,SDK应该问您是否要将代码转换为Swift 3或“稍后”执行。通过稍后选择,它不会将你的代码迁移到swift 3.我必须警告你,尽管我经历了同样的事情,并且几乎不可能仅仅因为你想使用最新的和最好的Xcode 8而向后工作。最终会遇到问题,比如您准备推送到应用商店时iTunesConnect将不会接受任何低于版本10的文件。另外,如果其他开发者继承了您的代码,那么他们会遇到问题正在使用较早版本的Xcode。
许多开源Swift项目都有Swift 3或Swift 2.3的分支(有关流行方法的详细信息,请参阅this post)。我检查了SwiftyJSON,它似乎有一个Swift 3的分支,所以你可以将你的应用程序转换成Swift 3,并试一试。为了使用它,改变你的Podfile到SwiftyJSON项:
pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git', :branch => 'swift3'
这取决于项目更新每个Xcode中8的测试版,所以它可能不会是完全的工作,但很可能会有少于100个错误。
注意:更新所有内容并修复编译器错误后,您可能会看到“使用传统Swift语言版本”错误。这可以通过将post_install
步骤添加到您的Podfile(请参阅this GitHub issue)或更新至CocoaPods 1.1.0.beta.1或更高版本(gem install cocoapods --pre
)来解决。
您必须将Use Legacy Swift Language Version
设置为YES
才能使用SWIFT 2.3
代码Xcode 8
。然后将其添加到您的Podfile
中,以确保您的所有吊舱目标都一致。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |configuration|
configuration.build_settings['SWIFT_VERSION'] = "2.3"
end
end
end
我希望它会有所帮助。
这看起来像和'结束'许多 – Cyrus
这真的很有用。谢谢! – speedynomads
以下添加到您的Podfile
结束然后运行pod install
:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
end
我不耐烦地敲击迁移按钮,发现它是困难的,如果不是不可能的去迁移,因为你没有犯一个方便的最近时间.. –