如何在 Swift 中使用 swift 安装cocoapodss

1343人阅读
swift(2)
这里主要说几个关于cocoapods导入三方库需要注意的问题和我遇到的坑
1、swift语言使用cocoapods配置Podfile文件时要加上use_framework!这句代码,作用是把三方库打包成静态库,具体为什么我也在研究。。。
2、swift调用oc的三方库
& a、要建立一个桥接文件,然后在target——&build setting中搜索bridg
把Objective-C Bridging Header路径设置一下,一定要设置对,如果你的桥接文件不是和project工程文件在同一级项目目录中,要记得把你的文件所在的目录加进路径,一定要确保根据这个路径可以找到你的桥接文件。
& b、在桥接文件中引用你要调用的三方库的文件名,(这里有坑,我在下面会说明),然后你就可以愉快的使用的库了。在使用的文件中直接用,不用再次导入
3、调用oc三方库遇到的坑,这里我用AFNetWorking举例
& a、#import &AFNetWorking.h&之后要设置一个User Header Search Paths,否则在需要用三方库的地方是调不出来的。在target——&Build Setting里找到search Paths,双击User
Header Search Paths后面的空白处,设置目录路径为${SRCROOT} & ,后边选择recursive。注意不要&#import &AFNetWorking/AFNetWorking.h&这样导入
& b、引用三方库的时候,需要在方法中或者声明为常量或者变量才能联想出这个库内的文件。只能说swift真的不是一般的严格。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:18115次
排名:千里之外
原创:25篇
转载:25篇
(3)(1)(3)(1)(1)(2)(1)(2)(3)(13)(9)(1)(5)(1)(1)(3)1560人阅读
Swift(4)
今天在用swift写项目时,需要用CocoaPods引入SDWebImage这个三方库,于是开始在Vim命令中创建pod file,在创建之前需要cd到当前项目的目录中,
Podfile创建步骤如下:
1、创建Podfile:touch Podfile
2、编辑Podfile文件:vim Podfile
& &按 i 进入编辑状态,编辑完成后按Esc退出编辑状态,然后输入:wq 返回,
& &Podfile文件的内容如下:
platform :ios, '7.0'
use_frameworks!
target 'Bantang' do
pod 'SDWebImage'
end需要注意的一点是:swift和OC中有一点不同,在swift中配置Podfile文件时要加上 use_framework! ,作用是把三方库打包成静态库,
在swift中调用三方库:
<span style="font-family:A color:#、选中target -& General中的Linked Frameworks and Libraries ,点击&#43;添加SDWebImage.framework
2、导入框架之后,直接在需要用到的swift类中 import SDWebImage,
然后就可以使用这个三方库了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4714次
排名:千里之外
(1)(1)(4)(6)在Swift中使用CocoaPods
招聘信息:
什么是 CocoaPods
&&CocoaPods is the dependency manager for Objective-C projects. It has thousands of libraries and can help you scale your projects elegantly. &
从介绍看,它是主要给 Objective-C 项目用的,但是我们可以很容易地混合 Objective-C 和 Swift 到同个项目,从而利用大量的 CocoaPods 库和 Swift 漂亮舒服的语法。
作为 iOS 开发新手,一定是要紧跟前人脚步,学习使用 CocoaPods 。
这里简单略过,请参考其他无数的文章。
系统默认安装,可以参考。在命令行下执行。
sudo&gem&install&cocoapods&
我的环境是 HomeBrew
#&添加&taobao&Mirror&不然被墙掉没办法下载&gem&sources&-a&http:&#&安装&gem&install&cocoapods&#&更新命令&rbenv&rehash&#&执行&pod&#&此时一般会下载官方的所有&PodSpec&库,也可以用&pod&setup&初始化环境&
本文不打算在安装部分耗费太多时间。希望看到这里保证你的命令行下有可用的 pod 命令。
假设我们已经有个项目,叫 ProjName ,需要使用一些注明的 CocoaPods 库,比如 AFNetworking3.
首先,命令行 cd 到我们的项目目录,一般 ls 命令会看到如下几个文件夹:
ProjName&ProjName.xcodeproj&ProjNameTests&
赞,就是这里,创建一个 Podfile 文本文件,写入如下内容
platform&:ios,&"8.0"&pod&"AFNetworking",&"~>&2.0"&
一般这么简单的文件都是直接 nano 写。 :)
直接创建 Podfile , CocoaPods 会创建一个项目同名的 WorkSpace ,然后添加一个叫 Pods 的项目,这个项目编译结果是一个叫 libPods.a的链接库, 它会添加到我们之前的 ProjName 项目中作为编译依赖。
当然,通过命令行执行 pod init 也可以自动创建 Podfile,而且可以自动分析当前项目的 target ,相对来说更好,也更优雅。具体请参考官方手册。这样的好处是更细致,还可以区分多个子项目子 target 。原理大同小异。
然后接下来,命令行执行 open ProjName.xcworkspace,注意这个可不是 .xcodeproj,这个是 CocoaPods 为我们创建的一个 WorkSpace ,包含我们之前的项目,和 Pods 依赖。
开始编码过程。直接在代码里调用,比如写在某个按钮的 @IBAction 里:
let&manager&=&AFHTTPRequestOperationManager()&let&url&=&"http://api.openweathermap.org/data/2.5/weather"&println(url)&&let&params&=&["lat":&39.26,&"lon":&41.03,&"cnt":0]&println(params)&&manager.GET(url,&&&&&parameters:&params,&&&&&success:&{&(operation:&AFHTTPRequestOperation!,&&&&&&&&&&&&&&&&&responseObject:&AnyObject!)&in&&&&&&&&&println("JSON:&"&+&responseObject.description!)&&&&&},&&&&&failure:&{&(operation:&AFHTTPRequestOperation!,&&&&&&&&&&&&&&&&&error:&NSError!)&in&&&&&&&&&println("Error:&"&+&error.localizedDescription)&&&&&})&
这里直接抄了 JakeLin 的 SwiftWeather 代码4,就一小段,希望他不会打我。
Swift 坑爹了
看起来貌似我们已经可以在 Swift 中使用 AFNetworking 了。结果刚写几句代码一堆类和变量找不到定义,而且坑爹的是很多时候我们只能靠猜测,判断这些 Objective-C 的定义转换成 Swift 定义是什么样子,用起来就是完全靠蒙!
这不科学!
这都三礼拜了,所以大家都摸索出了调用的方法,那就是按照和 Objective-C 代码混编的例子,添加 Bridging Header !
之前简单介绍过和 Objective-C 交互的内容5,大家可以去围观。
一般说来,你在 Swift 项目新建 Objective-C 类的时候,直接弹出是否创建 Bridge Header 的窗口,点 YES 就是了,这时候一般多出来个 ProjectName-Bridging-Header.h 。然后删掉这个类, Bridging Header 头文件还在。
在这个 Bridging Header 文件里写入要导入的 CocoaPods 库,就可以在 Swift 中使用了。
如果没有自动创建头文件的话,这个配置在项目的 Build Settings 中的 Swift Compiler & Code Generation 子项里。
创建一个头文件,指定为 Bridging Header 也可以。
然后编译,成功执行!
这就完事了?
实际上,前两天刚写一篇
, 把任意 Objective-C 库当做 Swift Module 是可行的。当时就觉得这个东西应该是可能完全进入 CocoaPods 的,但是在官方 repo 找了下发现,以前有人提过增加 module.map 支持,结果 CocoaPods 的人认为这个是 llvm 内部特性, issue 被关闭了。 最近又被提起,我在后面提了下 Swift 支持,希望官方靠谱。
所以下面的内容,就是,我们是否可以在 CocoaPods 上加入 module.map 支持,然后直接在 Swift 中 import ModuleName ?
扩展 CocoaPods
考虑了多种方式,最后选择了 Hook 的方式。如果 Ruby 技术足够好,或许可以直接写个插件。或者直接改官方代码给官方提交。但是实在能力有限。相关的 module.map 语法参考 llvm 官方手册 。用了最简单的功能。也许遇到复杂的 PodSpec 就不起作用了,但是原理如此,相信小伙伴们已经知道怎么做了。
目前我的 Podfile 大概是这个样子:
platform&:ios,&"8.0"&pod&"AFNetworking",&"~>&2.0"&pod&"Baidu-Maps-iOS-SDK",&"~>&2.0"&&post_install&do&|installer|&&&File.open("#{installer.sandbox_root}/Headers/module.map",&'w')&do&|fp|&&&&&installer.pods.each&do&|pod|&&&&&&&normalized_pod_name&=&pod.name.gsub('-',&'')&&&&&&&fp.write&<<EOF&module&#{normalized_pod_name}&[system]&{&&&umbrella&"#{pod.name}"&&&export&*&}&EOF&&&&&&&puts&"Generating&Swift&Module&#{normalized_pod_name.green}&for&#{pod}&OK!"&&&&&end&&&end&end&
post_install 是 Podfile 的一种 hook 机制,可以用来加入自定义操作。我在这里的写的逻辑就是,针对所有的 Pod 生成一个 module.map 文件。 位于 Pods/Headers/,这个目录被 CocoaPods 自动设置为项目的 Header Search Path 所以不需要额外处理。默认我们的 Swift 文件就找得到。
其中 normalized_pod_name 用于处理百度地图 API SDK 这一类名字带减号的库,因为他们不能作为 Module Name ,实际上或许有更好的方法来处理。
实测发现完全没有问题,直接 import AFNetworking 或者 import BaiduMapsiOSSDK 都可以。
而且很不错的一点是,按住 Command 键,然后鼠标点击模块名、类名等,会跳转到 Swift 定义。
遇到提示 .pcm 文件 outdate 的情况下需要你删除 $HOME/Library/Developer/Xcode/DerivedData/ModuleCache 目录,这个目录保存的是预编译模块,类似于预编译头文件。
目前 Swift 还是有很多 BUG 的,调用 NSObject 也许会让编译器直接 segment fault ,不带任何出错信息。很伤情。此时请第一时间检查语法是否有诡异,其次将所有用到字符串或者 Optional 的地方都额外用变量处理,避免用字面常量。(个人经验)
如果多次调用 pod install 并在其中修改过 Podfile,那么有可能你的项目依赖会乱掉,多了不存在的 .a 文件到依赖或者多次包含。手工在项目树和项目选项里删除就可以了。此类编译错误都是链接错误。
本文提出了一种 Bridging Header 之外的使用 CocoaPods 库的方法。利用有限的 Ruby 知识写了个 Hook 。目前测试 OK 。
CocoaPods 官网
CocoaChina 对 CocoaPods 的介绍
(Swift 与 Objective-C 之间的交互)
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量8911点击量7989点击量6410点击量6383点击量4406点击量3935点击量3090点击量3028点击量2687
&2016 Chukong Technologies,Inc.
京公网安备89经检测你所在的网络可能存在爬虫,因资源限制,我们只能拒绝你的请求。
如果你是推酷的用户,可以以继续访问使用。
如有疑问,可将IP信息发送到
请求解封。怎样在Swift中使用CocoaPods
招聘信息:
本文由yake_099()翻译自raywenderlich,作者:原文:最近关于CocoaPods有很多的议论。你可能从别的开发者那里听到过,或者在Github的目录中看到过。如果你之前从来没有用过,你可能会问,"CocoaPods到底是什么?"它不是神秘的亚马逊区域的部落人用手捡出来的生可可的豆荚,肯定不是!让来回答可能是最好的:CocoaPods是Cocoa项目的依赖管理工具。它有上千个能帮你优雅地扩充自己项目的库。优雅地扩展项目听起来很令人好奇,但是什么是依赖管理工具呢?你为什么会需要它呢?无论你正在创建一个什么样的app,你都有可能会用到别的开发者的代码,无论是以框架的形式还是库的形式。你可能很熟悉UIKit和Foundation,这两个都是苹果提供的框架。在这个教程中,你将会:了解为什么要和第三方库做朋友安装CocoaPods在一个starter项目中使用CocoaPods安装使用并修改依赖关系文件来提高用户体验了解语义化版本控制为什么库是你的朋友尽管你并不一定非要使用第三方库和框架,但是它们确实能节省你很多的时间,可以让你集中注意力在优化自己的app上,而不是敲无数行的你本不需要写的代码。你可以不通过依赖管理工具来使用第三方库和框架,我们网站提供了关于这种使用方式的实践性的教程。例如,这是我们的??和。不使用依赖管理工具,你可以简单地通过手动方式将每个库添加到你的工程里面。然而,这个方法有几个缺点:更新一个库到新的版本可能会很麻烦,尤其是一个库依赖于另外一个库的情况,那么就必须将这几个库全部更新。在项目中添加三方库可能会需要在代码中做一些本地的修改,这使得之后更新版本更加困难。判断你的app中用到的库的当前版本也是一件困难的事,尤其是当你没有提前记录下来的时候。如果没有一个中央位置来查看所有可用库的话,查找新库也是一件很困难的事。CocoaPods帮你克服以上问题甚至更多别的问题。它抓取库代码,解决库之间的依赖性问题,帮你查找并发现新的库,甚至以最简便的方式为你的项目配置正确的环境。前提这篇教程要求你熟悉基础的iOS和Swift开发。如果你完全不了解iOS或者Swift,那么在看这篇教程之前,你最好看下我们网站上一些其他??或者??教程,然后再回来看这篇。或者是深入来学习。这篇教程也包含了使用了Core Graphics的一些类。了解Core Graphics是一件有利的事,但不是必须的。如果你想学习更多关于Core Graphics的知识,请阅读我们的??系列。这篇教程要求Xcode 6.3和Swift 1.2.开始首先你需要安装CocoaPods。幸运的是,CocoaPods被建立在Ruby上,而最近的Mac OS X版本带有Ruby。这自从OS X 10.7之后就实现了。打开终端并且输入以下命令行:sudo?gem?install?cocoapods当要求的时候输入你的密码。终端的输出结果看起来应该是这样的:你必须使用sudo来安装CocoaPods,但是安装后就无需再使用了。最后,在终端输入以下命令行来完成设置:pod?setup?--verbose这个过程可能需要几分钟的时间,因为它将??克隆到了你电脑上的~/.cocoapods/目录下。verbose选项记录下了进程运行时的进展,能让你看到进程而不是一个僵在那里的屏幕。太好了,现在你开始设置来使用CocoaPods了。代码时间!为客户Ice Cream Shop, Inc.开发一款App你的首要客户是Ice Cream Shop, Inc。他们的冰淇淋太受欢迎了以至于不能在柜台接收用户订单了。他们雇佣你来做一个漂亮的iOS应用,那样就能让用户在他们的iPhone上下订单了。你开始开发app了,并且进展得还不错。在这里??。打开IceCreamShop.xcodeproj,然后运行,你会看到一个非常好吃的香草冰淇淋。用户应该能从这个屏幕中选择冰淇淋的口味,但是还不太可能,因为你还没有完成这个功能。从Views/Storyboards&Nibs中打开Main.storyboard来看app的布局。现在我们来快速整体地看一下这个app的核心,"选择你的口味"那一屏:PickFlavorViewController处理用户交互,例如,用户选择了冰淇淋的一种口味。PickFlavorDataSource是collection view所展示的不同冰淇淋口味的数据源。IceCreamView是一个自定义的view,可以用来展示冰淇淋圆锥形的蛋卷,并且它以Flavor?model来支撑。ScoopCell是一个自定义的collectionviewcell,它包含了一个ScoopView,这个view也是以Flavor?model来支撑的。由于每个冰淇淋店一般都会有一些招牌口味,每个也有他们本地的风味。因此,Flavor的实例中包含的数据需要通过web service来提供。然而,这还没有回答问题,"为什么用户不能选择一个冰淇淋口味?"在Controllers这个分组下面,打开PickFlavorViewController.swift,你会看到一个备用的方法:private?func?loadFlavors()?{
??//?Implement?this
}哈哈,这里面没有口味,你需要实现它。你可以使用NSURLConnection或??并用你自己写的网络类,这儿还有一个更简单的办法:,一个开源的网络库。你可能想就这么把它下载下来并将文件拖拽到工程里面。然而,那是很麻烦的方法。CocoaPods提供了更加优雅和灵活的解决方法。所以,闲话少说...安装你的第一个依赖管理工具首先你要关掉Xcode是的,你说的对,该创建Podfile了,在那儿你要定义工程的依赖管理。打开终端,用 cd 命令进入包含你IceCreamShop项目的那个目录下:cd?~/Path/To/Folder/Containing/IceCreamShop接下来,输入下面的命令:pod?init这将为你的项目创建一个?输入下面的命令行打开PodFile,并使用Xcode进行编辑:open?-a?Xcode?Podfile注意:你不能使用TextEdit来编辑Podfile,因为它有可能用图形化的更有吸引力的typeset quotes代替standard quotes,这可能导致CocoaPods不能理解并抛出错误,所以最好用Xcode或者别的编程文本编辑器来编辑你的Podfile。默认的podFile看起来是这样的:#?Uncomment?this?line?to?define?a?global?platform?for?your?project
#?platform?:ios,?&#39;6.0&#39;
target?&#39;IceCreamShop&#39;?do
target?&#39;IceCreamShopTests&#39;?do
end将注释的内容替换成下面的两行:platform?:ios,?"8.0"
use_frameworks!这就告诉了CocoaPods--你的项目使用的是iOS 8.0,并且将使用框架来代替静态库。想要在Swift中使用CocoaPods,你必须明确的写出use_frameworks! 来选择使用框架。如果你忘了写这个,CocoaPods能检测到你使用使用Swift CocoaPods,你安装pods的时候就会报错。如果你仅仅使用过Swift编程,这可能看起来有些奇怪--那是因为Podfiel实际上使用Ruby写的。你无需为了使用CocoaPods而学习Ruby,但是你要知道即使是很小的文字错误通常也会使CocoaPods出错。关于“库”你会看到"library"通常代指库或框架。很抱歉这个教程也在无意间混杂了这两个概念。实际上,当某人提到"Swift library",他们实际上指的是"Swift dynamic frameworks",因为swift不允许静态库。你可能想知道,"库(library)和框架(frameworkd)和cocoaPod之间的不同之处"。Cocoapod或者简写为"pod"是一种惯常的叫法,用来表示使用Cocoapods工具添加库或者框架到你的应用程序中。iOS 8引入了动态框架,这就允许了代码、图片和其他的东西(assets)可以被一起打包。在iOS 8之前,CocoaPods被作为静态库来创建,就是很"臃肿的"二进制文件。这意味着它包含了一些代码说明设置(例如i386 for the simulator, armv7 for devices等),但是它们不允许包含任何资源,例如图片或资产。另外一个重要的区别是动态框架有命名空间类,而静态库没有。所以,如果单个项目中不同的静态库里分别有一个叫做MyTestClasses的类,那么Xcode可能不能成功创建工程因为它会因重复的标识而导致连接失败。然而,Xcode很乐意在一个工程里的不同框架下分别有一个名字相同的类。为什么这很重要?不像OC,标准的Swift运行时库(runtime libraries)没有包含在iOS中!这意味着你的框架必须包含了必要的Swift运行时库。因此,用Swift语言写的pods必须以动态框架形式创建。如果苹果允许Swift静态库,那么使用同一个标准运行时依赖的不同库中将会产生重复符号。幸运的是,CocoaPods为你做了这些事。它甚至能做到一次性包含需要的依赖关系。你所要做的就是在使用swift cocoaPods时记得在Podfile中包含use_frameworks! ,那就没问题了。amazing,对不对?安装你的第一个依赖关系这是使用cocoapods安装你的依赖性文件的最后的时刻。将下面的内容添加到你的Podfile里面pod?&#39;Alamofire&#39;,?&#39;1.2.3&#39;这个是告诉CocoaPods你想添加1.1.4版本的Alamofire到你的工程中作为一个依赖性文件,这是写这篇教程时的最新版本。保存并关闭podFile现在你需要告诉Cocoapods为你的工程安装依赖性文件。在终端中输入下面的命令,但是要首先确认你还在包含了IceCreamShop和Podfile的目录下:pod?install你会看到输出结果与下面的类似Analyzing?dependencies
Downloading?dependencies
Installing?Alamofire?(1.1.4)
Generating?Pods?project
Integrating?client?project
[!]?Please?close?any?current?Xcode?sessions?and?use?`IceCreamShop.xcworkspace`?for?this?project?from?now?on.使用Finder打开你的工程文件夹,你看看到CocoaPods创建了一个新的IceCreamShop.xcworkspace文件和一个Pods文件来存储所有的工程依赖文件。注意:从现在开始,就像命令行警告提示的,你必须使用workspace文件而不是project,否则你将遇到编译错误。太棒了!你已经使用CocoaPods添加了你的第一个依赖管理。使用安装好的Pods如果已经打开了Xcode工程,那要关闭它并打开IceCream.xcworkspace.打开PickFlavorViewController.swift,在现有的导入下添加以下代码:import?Alamofire点击command+b进行编译。如果一切都没有问题,你不会收到任何编译错误的。接下来,用下面的代码代替loadFlavors()方法private?func?loadFlavors()?{
??let?urlString?=?"/downloads/Flavors.plist"
??Alamofire.request(.GET,?urlString,?encoding:?.PropertyList(.XMLFormat_v1_0,?0))
????.responsePropertyList?{?request,?response,?array,?error?in
????if?let?error?=?error?{
??????println("Error:?\(error)")
????}?else?if?let?array?=?array?as??[[String:?String]]?{
??????//?4
??????if?array.isEmpty?{
????????println("No?flavors?were?found!")
??????//?5
??????}?else?{
????????self.flavors?=?self.flavorFactory.flavorsFromDictionaryArray(array)
????????self.collectionView.reloadData()
????????self.selectFirstFlavor()
}下面是对这个过程的详细描述:1.你用Alamofire创建了一个get请求,并下载了一个包含冰淇淋口味的plist文件。2.一般你去看查看请求是否出错并解析错误。现在如果出错的话你只需要打印错误。3.将一个AnyObject?类型数组转换为字典数组。4.如果数组是空的,你只需要打印一个错误信息。5.如果一切都OK的话,你就将FlavorFactory方法创建的包含Flavor对象的数组赋值给self.flavors。这是一个同事为你写的类,是用来将装了字典类型对象的数组转换为Flavor对象。如果你喜欢的话你可以仔细看看这个工厂类,但是它对教程的其他部分不是特别重要。编译并运行!现在你可以选择一个冰淇淋口味了!选择装饰物app看起来很不错了,但是你仍然可以进行优化。你有没有注意到app花费了几秒钟的时间来下载flavors文件?如果你的网络很快的话你可能注意不到,但是用户不会都这么幸运的。为了让用户理解app现在正在加载什么内容,你可以显示一个加载指示器。?是个很不错的加载指示器.并且它支持CocoaPods,多么的巧合!你需要把这个加入到你的podfile里面。你现在不用通过命令行打开podfile了,你可以在工作区的pods中找到它。打开podFile并在Alamofire后面加入下面几行:pod?&#39;MBProgressHUD&#39;,?&#39;~>?0.9.0&#39;保存文件,并在终端通过pod install命令来安装依赖文件,就像你之前做的那样。这次发现什么不同的了吗?对,你写出了具体的版本号~>0.9.0。这儿会发生什么呢?Cocoapods建议所有的pods都使用语义化版本号()。语义化版本号这三个数字被定义为主要的,次要的和补丁版本号。例如,版本号0.9.0会被翻译为当主要的(major)版本号数字增加时, 意味着你做了一些不能兼容旧版本的更新。当你将pod升级到下一个主要版本时,你可能需要修复编译错误,否则pod可能跟之前表现得不太一样。当次要(minor)版本号增加时,意味着增加了新功能,但同时兼容旧版本。当你决定升级时,你可能需要也可能不需要新的功能,但是它不应该引起编译错误或者改变现有的功能。当补丁(patch)版本号增加的时候,这意味着做了bug修复。但是没有没有增加也没有改变功能。一般来说,你会希望尽快更新补丁版本到最新的版本,以便使用最新最稳定版本的pod。最后,最高版本号(major>minor>patch)必须按照以上规则逐步增加,而较低的版本号必须从0开始。需要一个例子吗?考虑一个当前版本为1.2.3的pod。如果做了一些不能向后兼容的改变,没有新的功能,但是修改了现有的bug,那么下一个版本是2.0.0挑战时间1.如果一个pod当前版本号是2.4.6,并且做了一些修复bug的改变,添加了一些向后兼容的功能,新版本应该是多少呢??答案:2.5.0解释:如果修改包含向后兼容的新功能,次要版本号(monir)就要增加了,并且补丁版本号(patch)就要被置为0.2.如果一个pod的当前版本是3.5.8,并且对当前的功能做了一些改变,新版本应该是多少?答案:4.0.0解释:如果改变修改了现有的功能,那么这就是不向后兼容的。所以,主要版本号(major)必须增加,而次要版本和补充版本置为0.3.如果一个pod的向前版本号是10.20.30并且只修复了一些bug,那么新版本号应该是多少?答案:10.20.31解释:如果只修复了bug,补充版本号(patch)就要增加了。说了这么多,这儿有一个例外:如果一个pod的版本低于1.0.0,这就被认为是测试版,次要版本号(minor)增加可能意味着向后兼容的改变。所以在MBProgressHUB中使用~>0.9.0意味着你需要安装大于或者等于0.9.0但是小于0.10.0的最新的版本.这就保证了你在安装pod的时候获得了最新的bug修复,但是不会意外的拉去向后兼容的改变。这儿还有一些其他的可用操作。具体的列表,请看。显示进程现在,回到PickFlavorViewController.swift,在其他的引用下面添加下面的内容import?MBProgressHUD下一步,在loadFlavors()后面加入以下方法private?func?showLoadingHUD()?{
??let?hud?=?MBProgressHUD.showHUDAddedTo(contentView,?animated:?true)
??hud.labelText?=?"Loading..."
private?func?hideLoadingHUD()?{
??MBProgressHUD.hideAllHUDsForView(contentView,?animated:?true)
}现在在loadFlavors()方法中,添加下面代码:private?func?loadFlavors()?{
????let?urlString?=?"/downloads/Flavors.plist"
????showLoadingHUD()??//?<--?Add?this?line
????Alamofire.request(.GET,?urlString,?encoding:?.PropertyList(.XMLFormat_v1_0,?0))
??????.responsePropertyList?{?request,?response,?array,?error?in
??????self.hideLoadingHUD()??//?<--?And?this?line
??????if?let?error?=?error?{
??//...就像方法名字所表明的,showLoadingHUD()方法会在GET请求下载时产生一个MBProgressHUD的实例对象,当请求结束时hideLoadingHUD()会将HUD隐藏。由于showLoadingHUD()在闭包之外所以它不需要前置代码self。编译运行。现在你会看到一个加载指示器:干的漂亮!用户现在可以选择他们最喜欢的冰淇淋口味了,并且在口味文件下载的时候会显示一个正在加载的指示器。下一步你可以从这儿 恭喜你,现在你已经学会了使用cocoapods的基础,包括创建和修改依赖性文件,并且理解了语义化版本号。现在你可以准备开始在你自己的项目中使用他们了。当然你 还可以用cocoapods做很多别的事。你可以在C上搜索现有的pods。也可以参考Cocoapods去学习如何使用这个杰出工具的更多细节内容。但是要记住,一旦你开始使用你会好奇你曾经是怎么不用它来进行管理的!希望你享受阅读这篇教程的过程我写的时候。你最喜欢cocoapods的那些部分?哪一部分是你每天的项目最依赖的?请在下面的评论或者论坛中分享!
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
点击量8271点击量6603点击量6494点击量5512点击量5022点击量4923点击量4671点击量4370点击量4204
&2015 Chukong Technologies,Inc.
京公网安备89

我要回帖

更多关于 swift cocoapods 的文章

 

随机推荐