IOS Swift 使用 cocopods步骤

2016-07-20  本文已影响0人  EthanWang

首先你要关掉Xcode,打开终端,用 cd 命令进入包含你项目的那个目录下:cd ~/Path/To/Folder/Containing/TestPeoject

接下来,输入下面的命令:

pod init

这将为你的项目创建一个PodFile

输入下面的命令行打开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, '8.0'

# Uncomment this line if you're using Swift

# use_frameworks!

target 'TestPeoject' do

end

target 'TestPeojectTests' do

end

target 'TestPeojectUITests' do

end

把 # platform :ios, '8.0' 和 # use_frameworks! 两行注释打开

# Uncomment this line to define a global platform for your project

# platform :ios, '8.0'

# Uncomment this line if you're using Swift

# use_frameworks!

target 'TestPeoject' do

end

target 'TestPeojectTests' do

end

target 'TestPeojectUITests' do

end

这就告诉了CocoaPods--你的项目使用的是iOS 8.0,并且将使用框架来代替静态库。

想要在Swift中使用CocoaPods,你必须明确的写出use_frameworks! 来选择使用框架。如果你忘了写这个,CocoaPods能检测到你使用使用Swift CocoaPods,你安装pods的时候就会报错。

关于“库”

你会看到"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! ,那就没问题了。

安装依赖

修改Podfile文件如下:

# Uncomment this line to define a global platform for your project

# platform :ios, '8.0'

# Uncomment this line if you're using Swift

# use_frameworks!

target 'TestPeoject' do

pod 'AFNetworking', '~> 3.1.0'

end

target 'TestPeojectTests' do

end

target 'TestPeojectUITests' do

end

这个是告诉CocoaPods你想添加大于3.1.0版本小于3.2.0版本的AFNetworking到你的工程中作为一个依赖性文件。

关于Podsfile

pod 'AFNetworking'      //不显式指定依赖库版本,表示每次都获取最新版本

pod 'AFNetworking', '2.0'    //只使用2.0版本

pod 'AFNetworking', '> 2.0'    //使用高于2.0的版本

pod 'AFNetworking', '>= 2.0'    //使用大于或等于2.0的版本

pod 'AFNetworking', '< 2.0'    //使用小于2.0的版本

pod 'AFNetworking', '<= 2.0'    //使用小于或等于2.0的版本

pod 'AFNetworking', '~> 0.1.2'    //使用大于等于0.1.2但小于0.2的版本

pod 'AFNetworking', '~>0.1'    //使用大于等于0.1但小于1.0的版本

pod 'AFNetworking', '~>0'    //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

最后,从工程的 workspace 文件启动 Xcode 来编写你的程序。

如果在 .swift 文件中,无法 import 到你的依赖库,或者无法自动提示时:

1.选择target(就是左边你的工程target)—— BuildSettings —— search Paths 下的 User Header Search Paths(如图所示:)

2.双击后面的空白区域:(如图所示:)

出现下面的图,并且点击“+”号添加一项:并且输入:“$(PODS_ROOT)”(没有引号),选择:recursive(会在相应的目录递归搜索文件):

这样设置完成之后,再在工程中导入cocoaPods安装的第三方类库就有提示了。

上一篇下一篇

猜你喜欢

热点阅读