rayjuneWu

To be a better man.

嗨,我是吴蕾君 (@rayjuneWu),一名来自中国杭州的 iOS Developer / PM。


Xcode8兼容Swift2.3项目

如果你最近升级了Xcode8,一跑Swift2.3的项目,毫无意外地,都是错误。希望看完这篇文章,可以帮你顺利跑起来。

Xcode8同时支持Swift2.3Swift3.0,你可以自由选择使用其一来开发。Swift3.0刚刚出来不久(当前2016-09-19),公司项目使用的部分第三方库还没有Swift3.0的版本,保险起见,还是决定先使用Swift2.3。Let’s begin!

Step1:

选择项目->Build Settings->搜索‘Swift_version’,这个选项顾名思义说的就是是否使用以前的Swift版本,将其改为YES
Paste_Image.png

这样以后呐,我们项目自己的代码指定的就是Swift2.3了
但是我们的项目是用cocoapods来管理第三方库的,如果现在直接跑起来,你会发现类似下面的错误:
Paste_Image.png
我们还需为pods管理的target设置Swift版本.

Step2:

在项目里找到Pods,一个个将报错的target的Use Legacy Swift Language Version的值设为YES:

Paste_Image.png
当然一个个设置嫌慢的话,可以改一下Podfile:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

def pods
    pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :tag => '3.5.0'
    pod 'Kingfisher', '~> 2.5.1'
end

target 'your-target' do
    pods
end

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

:有些第三库库部分已经有Swift3的版本,如Alamofire,Kingfisher,在pods里请设置好对应的版本,否则可能还是会出错。
至此,你的Swift2.3的项目应该可以跑起来了。

TIPS:

一:

项目跑起来你会发现一堆log,只需将OS_ACTIVITY_MODE设为Disable即可,如图:

Paste_Image.png

最近的文章

项目经理技能-沟通

项目团队生命周期会经历的阶段: 形成阶段。团队成员相互认识,了解项目情况并明确自己在项目中的定位与职责。团队成员倾向于相互独立,不怎么开诚布公。 震荡阶段。在本阶段,团队成员开始项目工作,讨论项目方案。 规范阶段。团队成员开始协同工作,并按团队所规定的方式,调整自己的工作方法,各成员开始互相信任 成 …

于  PM 继续阅读
更早的文章

Swift:Map,FlatMap,Filter,Reduce指南

此文初始发布在我的简书。 Swift是支持一门函数式编程的语言,拥有Map,FlatMap,Filter,Reduce针对集合类型的操作。在使用Objective-C开发时,如果你没接触过函数式编程,那你可能没听说过这些名词,希望此篇文章可以帮助你了解Swift中的Map,FlatMap,Filte …

于  Swift 继续阅读
comments powered by Disqus