美文网首页
IOS Swift 使用 cocopods步骤

IOS Swift 使用 cocopods步骤

作者: EthanWang | 来源:发表于2016-07-20 11:21 被阅读0次

    首先你要关掉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安装的第三方类库就有提示了。

    相关文章

      网友评论

          本文标题:IOS Swift 使用 cocopods步骤

          本文链接:https://www.haomeiwen.com/subject/jtpyhttx.html