Xcode中Swift编译器版本问题

Via chenkai

两周前WWDC2016发布当晚,就正式下载Xcode 8.0 Beta版本,正好最近梳理Swift语法,想尝试用Swift做一个小的Demo,其中就涉及使用到Swift版本的Auto Layout框架SnapKit. 但就在大概梳理整个文档之后,使用Carthage集成SnapKit到项目中一直出现一个很奇怪的编译错误:

Xcode: Module file was created by a newer version of the compiler

直到出发休年假前,这个问题一直困惑我很久,一直没找到对应的解决方案. Well,回到北京当晚,打开mac重新梳理清思路之后,这个问题终于得到解决. 顺带分享一下解决方案.

我的Mac上有两个版本的Xcode,一个是正式版7.3,另外一版本自然也就是8.0 Beta. WWDC上Apple官方发布Swift3.0版本,安装了8.0 Beta之后,Swift编译器版本就默认指向了3.0,可以打开命令行输入:

swift --version

查看Swift当前版本,结果会显示:

Apple Swift version 3.0 (swiftlang-802.0.18.2 clang-803.0.31)

显然当前Swift编译器版本是Swift 3.0,而SnapKit本身关于Swift 3.0版本还在迭代中,所以本身不是不支持3.0的. 这样会到通过Cathage引入SnapKit框架时,通过:

import SnapKit

一直会抱如上编译错误. 很明显这个问题源自于引入框架和当前Xcode 开发Swift编译器版本不符导致的,虽然Xcode 8.0 Beta一直提示支持在Swift 2.2 和 3.0版本之间进行切换,但其实并不好用. 虽然有人说stackoverfllow上提到一个比较简单粗暴但非常有效的解决方案,直接卸载Xcode 8.0 beta,但想想回头还要研究iOS10新特性,遂放弃了这个方案. 那有没有更好的解决方式呢? 答案是有.

当Mac中有多个Xcode版本,当打开工程的时候,通常会有一个默认配置,细心研究就会发现,如果安装一个Beta版本Xcode8.0,所有默认配置都默认指向当前最新版本Xcode配置,这里面也包含Swift编译器,可以通过如下命令在命令行中查看:

xcode-select -p

你会看到如下结果:

Xcode版本

果不其然它默认指向了Xcode 8.0 Beta! Xcode 7.3 SDK默认打包的Swift 编译器版本是2.2,那如何降回来?使用如下命令:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

然后重新通过xcode-select -p看默认指向xcode版本,结果如下:

cXcode配置

你会发现,默认配置Xcode版本会重新指向正式版7.3,通过Swift --version命令重新查看一下Swiftb编译器版本也正如你所期,Swift编译器版本成功降回到2.2版本.

这时通过Carthage重新引入SnapKit框架:

引入SnapKit框架

整个SnapKit框架Building成功,把iOS的Framework引入Porject中,重新Rebuild你会发现刚开始那个错误完全消失了,编译通过,问题解决.

当前Swift 3.0 发布不久,相对于之前2.3版本变动并不是特别大,现在Swift第三方库在Github上也日渐增多,但并不是所有Framework都能及时更新支持到最新的Swift版本,所以正式生产环境来说,为了稳定性,基本毫无疑问基本不会考虑3.0.

这里顺带提一下我在Github看到一些关于Swift一些比较开源库集合贴,重点推荐awesome swift,基本囊括了目前Swift项目开发方方面面,高效率选择合适的开源项目,从而更多地专注于自己项目本身,会有很大帮助. 当然国内开发者也做了一个中文推荐第三方库集合贴SwiftGuide,也是非常值得参考. 如上两个集合贴都只是坐了索引,其实很多重要的库你会发现可能也会找不到,比如SnapKit, 切随着Swift 3.0版本发布,集合贴中设计库支持的Swift版本并没有说明,需要开发者自己去甄别选择. 当然如果你有好的第三方库推荐,不妨在issue中推荐给作者. btw,如果你不需要开发过程用到iOS 10新特性,目前来说还是不推荐安装Xcode 8.0 Beta版本.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,019评论 4 62
  • 先写几个正在进行时。 number1 陈伟霆 首记里说的2016年最疯狂的事其实就是和...
    葶樱阅读 350评论 0 1
  • 前言 随着移动互联网的飞速发展,移动端产品满天飞,深入各行各业,移动端安全已经变得跟PC端安全同等重要地位。但由于...
    海波笔记阅读 13,754评论 0 52