本文共 3586 字,大约阅读时间需要 11 分钟。
使用CocoaPods的例子
使用过程中遇到的问题
1.CocoaPods提示[!] Unable to find a pod with name matching AFNetworking
或者 [!] Unable to find a specification for AFNetworking
即找不到AFNetworking
,解决方法如下:
$ rm -rf ~/.cocoapods$ pod setup$ pod install
2.pod更新,使用pod update
命令,但是这样会更新repo,导致更新时间漫长
可使用pod update --no-repo-update
,install也一样pod install --no-repo-update
$ pod install --verbose --no-repo-update$ pod update --verbose --no-repo-update
3.使用cocoapods安装libwebp 0.6.0
遇到Error installing libwebp
解决方法参考
4.cocoapods位置
pod repo
命令可查看仓库的位置,一般位于~/.cocoapods/repos/master
~/Library/Caches/CocoaPods/
How to Use CocoaPods with Swift
在Swift中使用CocoaPods
安装CocoaPods,在终端输入如下的命令:sudo gem install cocoapods
输入密码,终端窗口的输出大概如下:
必须使用sudo来安装CocoaPods,但在安装后,就不必再使用sudo了。
然后再在终端输入如下的命令:
pod setup --verbose
这个过程会花费一段时间,它会把克隆到你的电脑 ~/.cocoapods/ 中。
verbose选项是用来输出进度的。安装完成后,开始编码
下载这个开始 运行后回出现这个界面: 用户可以从这个界面选择喜欢的ice cream,但是现在还不行,因为还没完成。 打开Main.storyboard来查看app的布局,如下:- PickFlavorViewController处理用户的交互
- PickFlavorDataSource是collection view显示不同种类ice cream的数据源
- IceCreamView是一个用来显示ice cream的自定义视图,其背后有一个Flavor模型。
- ScoopCell一个自定义的custom collection view cell,它包含了一个ScoopView,其背后也有一个Flavor模型
包含Flavor实例的数据需要从网络获取。
打开PickFlavorViewController.swift,在Controllers分组的下面,你会发现一个未完成的方法:private func loadFlavors() { // Implement this}
你需要自己实现它。
你可以使用NSURLConnection或者NSURLSession,或者你自己定义的网络类,这儿还有一个更简单的方法,使用开源的安装依赖Installing Your First Dependency
首先关闭Xcode。 打开终端,cd到IceCreamShop工程cd ~/Path/To/Folder/Containing/IceCreamShop
然后再输入如下的命令
pod init
这样会在你的工程中创建一个文件。
输入如下的命令来用Xcode打开Podfile文件来编辑
open -a Xcode Podfile
默认的Podfile大概看起来是这样的:
# Uncomment this line to define a global platform for your project# platform :ios, '6.0' target 'IceCreamShop' do end target 'IceCreamShopTests' do end
使用如下的内容替换注释的两行:
platform :ios, "8.0"use_frameworks!
这是告诉CocoaPods,你在针对iOS 8.0开发,将会用到frameworks来代替static libraries。
为了在Swift中使用CocoaPods,你必须在include use_frameworks!来使用frameworks。如果你忘记了,就会报错。关于Libraries
你通常看见的“library”都是指library 或者 framework。但是在本篇教程中,我们不会混淆它。实际上,如果有人说“Swift library”,它指的是“Swift dynamic framework”,因为Swift静态libraries是不被允许的。 你可能会疑惑,“library,framework,和CocoaPod之间的区别是啥”。 CocoaPod,是使用CocoaPod工具把library或者framework添加到你的工程中。 在iOS8中引入了dynamic frameworks,它允许code,image和其他的assets捆绑在一起。在iOS8以前的版本,CocoaPods被创建为static libraries,就是“fat”二进制文件。这意味着它们包含几个代码指令集(例如用于模拟器的i386,用于设备的armv7),但是它们不能含有任何的资源,例如images或者assets。 另一个重要的区别是dynamic frameworks有命名空间类,而static libraries没有。所以,如果你在一个工程中有两个MyTestClass类在不同的static libraries,Xcode将无法编译项目。然而,Xcode可以编译在不同的frameworks中有两个相同名字的类。 不像Objective-C,标准的Swifit的运行时libraries并没有包含在iOS中。这意味着你的framework必须包含包含必要的runtime libraries。其结果是,使用Swift的Pod必须被创建为dynamic frameworks。 幸运的是,CocoaPods已经处理好这些。你所需要做的就是包含_frameworks!。继续安装依赖
在Podfile第一个target block里,添加如下的内容pod 'Alamofire', '1.2.3'
这是告诉CocoaPod,你想要包括 Alamofire,版本为1.1.4。
保存并关闭Podfile。 现在你需要告诉CocoaPod来安装依赖。在终端中输入:pod install
你会看到如下类似的输出:
Analyzing dependenciesDownloading dependenciesInstalling Alamofire (1.1.4)Generating Pods projectIntegrating client project [!] Please close any current Xcode sessions and use `IceCreamShop.xcworkspace` for this project from now on.
打开工程文件,你会发现CocoaPod创建一个新的IceCreamShop.xcworkspace文件和一个Pods文件夹,用来保存所有的工程依赖。
注意:从现在起,如命令行提示的那样,你必须使用workspace,而不是project,否者的话将会报错。
导入
不用在命令行中打开PodFile,你可以直接在workspace中在找到Pods: 在Alamofire行的后面输入:pod 'MBProgressHUD', '~> 0.9.0'
保存,在终端中输入pod install来安装依赖。
~> 0.9.0的意思是安装的最新版本大于或者等于0.9.0,但是不能小于0.9.0。在OC中使用CocoaPod,请参考
默认的Podfile可能如下:
# Uncomment this line to define a global platform for your project # platform :ios, “6.0”target "ShowTracker" do end
把# platform :ios, "6.0"替换为如下的:
platform :ios, "7.0"
转载地址:https://windzen.blog.csdn.net/article/details/46544313 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!