Xcode 8 升级 Swift 3.0 问题。
来源:互联网 发布:js时间戳相减 编辑:程序博客网 时间:2024/06/05 18:39
前言 ——
Xcode 8 出来也有一段时间了,这两天用了下,也基本是开始使用了,在这里就把自己项目用到的库,分享下这几天使用Xcode 8 踩的一些小坑,和解决办法,其实处理情况觉得都大同小异,明白报错原因就容易了~ 希望能帮助小伙伴,如果有小伙伴用到了什么 Swift 的第三方,遇坑的欢迎留言、分享给更多的小伙伴~ 一起解决。
注意:1、如果要直接使用项目尝试升级的话,一定要备份!!备份!!备份!!
2、可以保留着Xcode 7.3.1 和 Xcode 8 两个版本,如果迁移不成功的话可以替换为原来的开发工具。
正题 ——
踩坑过程
使用Xcode 8创建一个空项目,用终端编辑 Podfile 文件,导入第一个库 SnapKit ,如下:
然后用 Xcode 8 打开,会有这样的提示 :
大概意思就是问你,是否现在升级 Swift ? Later -> 稍后 , Convert -> 升级。
一开始,根据提示,我们大都会选择 升级,然后在选择 Convert to Swift 3.0 升级到3.0 ,再 Next ,
然后就会出现转换前 和 转换后的语法对比,点击 Save 保存的时候提示如下 :
意思是是否解锁当前的库,然后更改这些? 一般的来说,CocoaPods 导入的第三方库,都是锁定的不允许更改的,到这一步的时候,其实已经觉得可能会迁移失败了,点击了 Unlock ,然后再编译,果然没失望... 确实编译不过了,第一次迁移失败了...
其实到这,就知道,如果有到这一步 询问你是否解锁的过程,那基本会是失败的了。
按照正常的逻辑,像这些第三方的库,升级语法应该都是作者已经更新好了的,我们只需要 update ,或者升级本地库的方式去处理,那么应该这样处理:
SnapKit 处理方式
在询问 Convert to Current Swift Syntax? 先选择 Later,再确认 Later 。
然后编译,出现这样的错误
Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly.
按错误的字面意思,是需要正确的配置这个库的目标版本。。。那好,选中 Pods -> Targets 下选中 SnapKit ,在选择 Build Settings ,搜索 Swift Compiler - Version, 然后将 Use Legacy Swift Language Version 对应的项 选择 NO 。 意思是 如果你的库是最新的3.0语法,则选择 NO,不使用旧版本语法。 如果还是2.x的语法,则选择 YES 。 再编译项目 ,成功! ^_^ 如下图
DKImagePickerController 处理方式
这个库是一个相册选取库,我们在 Podfile 文件中加入 pod 'DKImagePickerController' , 然后 pod install
然后打开项目,用 SnapKit 的处理方式,但是 Use Legacy Swift Language Version 无论选择 NO 还是 YES ,都不能编译通过,为什么呢? 然后仔细看错误,实际上语法还是旧版本的,那也就是说明实际上还没有更新到最新的? 根据这个点,去这个库的 Github 上看了一下 ,作者确实已经更新了,并且已支持 Xcode 8 and Swift 3
这就奇怪了? 然后再回终端看一下,刚刚 pod install 库的版本 ,再 pod search DKImagePickerController 一下,版本都是显示 3.3.4
然而 Github 上最新的是 3.4.0
所以确实是我们自己本地库的代码不是最新的,所以,,所以,,我们需要这样更新
现在 Github 上,将下载地址 copy 一下,
然后重新编辑 Podfile 文件,pod 'DKImagePickerController' 后面加上指定地址,就是刚刚copy的,如下:
然后我们重新 pod install .
再打开项目, 在询问 Convert to Current Swift Syntax? 先选择 Later,再确认 Later 。
按照 SnapKit 的处理方式,将 SnapKit 和 DKImagePickerController 的 Use Legacy Swift Language Version 对应的项 选择 NO . 再编译,通过。
总结
1、 要先确定你的这个 Swift 库,是否已支持 3.0 ,再设置 Use Legacy Swift Language Version 是否支持旧版。
2、 如果1的方法不行,要再确定本地库的代码是否是最新的,版本和Github上的最新一致。
.
.
.
.
.
.
.
未完待续...
1 0
- Xcode 8 升级 Swift 3.0 问题。
- xcode 升级 插件问题
- 解决频繁升级Xcode问题
- 搜集到一些升级到XCode 8 的问题
- swift 3 和 xcode 8
- xcode升级到4.5遇到的问题
- 关于升级xcode 5.1编译失败问题
- Xcode升级到5.1遇见问题
- 升级Xcode后的插件无效问题
- 解决升级xcode后插件失效问题
- 升级xcode存在问题,一点点总结
- Xcode 升级后插件失效问题
- 升级Xcode之后,VVDocumenter的安装问题
- 升级xcode 7遇到的问题
- 解决升级Xcode后插件失效问题
- 升级xcode 一句话解决xcode插件失效问题
- Xcode 升级7,iOS升级ios9之后调试问题
- Swift 3.0 【清除 Xcode 8 控制台输出的冗余代码】
- Xilinx 官方example的TCL使用
- 关于iOS Tabbar的一些设置
- 常见的RuntimeException
- 7.4.2 程序中断方式
- proc文件系统的使用
- Xcode 8 升级 Swift 3.0 问题。
- iOS开发 指定页面关闭右滑手势返回功能
- NFS服务器安装配置和使用
- 初学移动开发技术_两个页面相互跳转,并且向上一个活动传递数据并显示
- Z-Stack Developer's Guide - Zigbee & Addressing
- Android SnackBar使用方法
- AbsoluteLayout布局
- 单链表的逆置 --C语言泛型编程
- Sunrise at sea