Swift 2.3 / 3.0如何添加第三方库

原文地址: https://kemchenj.github.io/20...html

Swift 3的 beta 版如今已经出来了, Chris Lattner 以前在邮件里也大概提到说 Swift 3在八月就基本上全面完工ios

图片描述

你们在写小 demo 或者是项目迁移到 Swift 3.0 的时候遇到最大的一个问题应该是第三方库的添加git

Swift 社区一直都是热情爆满, 诸如 Alamofire, Decodable等第三方库都有 Swift 3.0 的分支, 但若是在导入的时没有处理一下, 就老是会出各类奇奇怪怪的问题, 我在这里分享一下我本身的解决方案github

其实主要要处理的问题就只有两个swift

  1. 指定第三方库的某个特定分支xcode

  2. 指定工程文件内 Swift 编译的版本app

Cocoapods

这里以 Alamofire 为例, 主要是须要在 podfile 里面多加点东西post

指定分支

首先是指定分支, cocoapods自己只支持 name 跟 version 两个参数, 但咱们能够经过指定 git 仓库, 而后再指定 branch, 具体格式以下:学习

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3'

指定编译版本

还有就是指定 Swift 的版本, 只要在项目的最后加上下面这几句就能够了, 这里的几句话对项目里的 target 作了个遍历, 修改了所有 target 的 Swift 编译版本ui

post_install do |installer| 
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

可是这么写有一个缺点, Objective-C 跟 Swift 的混编项目, 若是想要引入 OC 的库的话, 就不能这么作了, 可是一个一个去设置编译版本又太麻烦, 我以为最简单的仍是直接进去项目里, 把SWIFT_VERSION这一项删掉就能够了

图片描述

完整 podfile 以下:

project 'sample.xcodeproj'

platform :ios, '9.0'

target 'sample' do
    use_frameworks!

    pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3'
end

post_install do |installer| 
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

Carthage

Carthage 的具体用法我就不解释了, 其实我我的而言仍是更喜欢 Carthage, 本身操做过一遍基本上都能理解第三方库导入的过程了

指定分支

Carthage因为自己就是一个去中心化的包管理器, 因此在 cartfile 里面选择分支就能够了

github "Alamofire/Alamofire" "swift3"

指定编译版本

Carthage编译就很简单了, Swift 3的话直接 carthage update 就好了, xcodebuild 指向了Xcode 8的前提下, 默认 Swift 3, 可是 Swift 2.3的话就须要指定一下版本, 以下:

TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage update --platform ios

而后编译的时候有一点须要注意的是, Carthage 默认会调用 xcode build 去变异, 若是咱们电脑同时有两个版本的 Xcode 的时候, 须要确认一下 Xcode build 的版本

图片描述

若是不是 Xcode 8的话, 就运行一下这条命令去修改就能够了

sudo ./xcode-select -switch /Applications/Xcode-beta.app/

最后

Swift 的各方各面都让人以为欲罢不能, 比起有点年纪的 Objective-C, 天天的接触都能感觉到 Swift 各类神奇的写法

Swift 像是个什么都想要的任性的女友, 跟她一块儿会很累, 累的是你必须为了她的进步而更加努力去学习更多东西, 接触更多新的东西

"Swift 从入门到从新入门"看起来好像很悲催, 但若是改为"女友从认识到从新认识", 其实也挺带感的...

初级 iOS 开发, 广州地区求职 ing
简历: https://kemchenj.github.io/re...
联系方式: chenkem95@outlook.com

相关文章
相关标签/搜索