zoukankan      html  css  js  c++  java
  • Swift Tips

    CocoaPods 作为 iOS 开发的包管理工具,几乎成为了 Objective-C 的行业标准。它为我们提供了非常方便的包管理功能。而苹果正式发布 Swift 语言也已经有半年多时间了,Swift 作为 iOS 开发语言发布后,迅速的被开发者们所接受。而随之而来的,就是越来越多用 Swift 写出得第三方库的管理问题。而 CocoaPods 的最新预览版已经支持了 Swift 语言。这对已经开始使用 Swift 来进行开发的朋友无疑是一个很大的福音。

    CocoaPods 简介

    这一小节是对 CocoaPods 一个入门介绍,如果您已经了解或使用过了 CocoaPods 就可以直接掉过本小节,继续下面的内容。几乎每个相对资深的 Objective-C 开发者都会对 CocoaPods 比较熟悉。CocoaPods 是一个 iOS 和 Mac OS 平台下开发库的包管理平台。更通俗的来说,就是一个让我们不必导出去找第三方库,而是帮我们来管理这些库的更新版本的一套工具。

    让我们来用一个简单的例子来说明 CocoaPods 吧:

    假如我们现在用 Objective-C 开发一个项目,我们用到了很多第三方库,我们会用到 AFNetworking 来处理网络操作,还会用到 EGOTableViewPullRefresh 来构建下拉刷新的 TableView 界面, 还要用到 SVProgressHUD 作为我们的加载进度提示。使用 FMDB 进行 Sqlite 数据库的操作。

    那么我们会怎么办呢?我们先去这里 https://github.com/AFNetworking/AFNetworking 下载 AFNetworking 的代码包,然后解压缩拷贝 到我们项目的根目录,然后再将它引用到我们的项目中。接下来对 EGOTableViewPullRefreshSVProgressHUD,FMDB 也要进行同样的操作,下载,解压缩,拷贝,引用,这些操作。如果这些库中还引用了其他的系统库,我们还要在项目设置中将这些库的引用配置好,不然就会引起编译错误。比如 FMDB 引用了 sqlite3.lib 库,所以我们还要将这个系统库包含进项目。

    感觉有些麻烦哦。。

    一般的项目中或多或少都会用到这么5,6个第三方库,再加上我们还要进行一些数据统计,也要添加它们的第三方库。如果这些第三方库中的某些库有了更新版本,而且我们还需要这个更新的话,那么首先要打开那个库的下载页面,然后下载,复制,删除 这些操作。

    是不是有一种凌乱感呢。。 就像他这样。。。

    我们的思维被这些诸如复制,粘贴,文件操作的杂务打乱了。而且这些库仍然没有秩序,比如某一天我们想知道项目中都引用了哪些第三方库,我们就中代码里面找。

    CocoaPods 的出现正是为了解决这个问题。让我们来看看使用 CocoaPods 是如何处理上述问题的。

    如果我们要使用 CocoaPods 引用这些库,首先我们需要在项目的根目录中建立一个 Podfile 文件:

    platform :ios, '8.0'
    source 'https://github.com/CocoaPods/Specs.git'
    
    pod 'AFNetworking'
    pod 'EGOTableViewPullRefresh'
    pod 'SVProgressHUD'
    pod 'FMDB'
    

    然后同样在根目录中运行 pod install 命令。 CocoaPods 就会为我们下载并自动完成各种引用依赖关系的建立。命令运行完成之后,我们的所有第三方库的引用就完成了。是不是方便多了,只需要运行一条命令即可完成所有这些繁琐的操作。

    如果我们需要更新这些库,同样的也只要运行一下这个命令即可 pod update

    是不是觉得豁然开朗了?

    有了 CocoaPods 我们管理各种第三方库方便了很多,只需要在 Podfile 里面写下需要用到的库,然后运行一下命令即可完成。如果我们要确定我们需要的库在 CocoaPods 中是否可用,我们可以到它的官网上搜索即可, http://cocoapods.org

    CocoaPods 对 Swift 的支持

    CocoaPods 的最新预览版已经提供了对 Swift 项目的支持。下面我们来介绍下它的安装和使用步骤。

    因为 CocoaPods 是在 ruby 环境上运行的,我们首先要安装它的运行环境。

    安装 ruby 的话,推荐大家使用 rvm 来安装,进入它的官网 http://rvm.io 我们会看到 rvm 的主页介绍。我们通过一条命令来安装 rvm

    curl -sSL https://get.rvm.io | bash -s stable
    

    安装好 rvm 后,我们接下来用它来安装 ruby 环境:

    rvm install 2.1.1
    

    这条命令代表,我们要安装 ruby 的 2.1.1 版本,接下来 rvm 会自动为我们完成剩余的操作。

    我们的 ruby 安装好后,我们可以使用 ruby --version 来确定安装是否成功,如果安装成功,我们会收到这样的提示:

    ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]
    

    ruby 安装成功后,我们就可以安装 CocoaPods 了,继续输入这个命令:

    sudo gem install cocoapods --pre
    

    执行完这个命令后,我们就可以使用 CocoaPods 了。我们注意到 --pre 命令行参数,这个参数是用来安装预览版的,也就是说只有通过这个参数来安装 CocoaPods 我们才可以在 Swift 项目中使用它。

    现在我们就可以使用它啦,我们在 Xcode 中创建一个 Swift 项目。然后我们在这个项目的根目录中创建 Podfile 文件。

    我们项目的根目录内容如下:

    我们用命令行进入这个目录,并输入 touch Podfile 命令来创建这个文件。

    $ touch Podfile
    

    创建好后我们的目录就是这样:

    接下来我们可以在 CocoaPods 的主页 上搜索我们想用到的库,以确定这些库的精确名称。比如我们搜索 Alamofire 库

    我们看到,在搜索结果中,显示出了这个库的精确名称和当前版本号。接下来我们就可以编辑我们刚刚创建的 Podfile 文件了。

    platform :ios, '8.0'
    source 'https://github.com/CocoaPods/Specs.git'
    
    pod 'Alamofire'
    

    编辑好后,我们在项目的根目录中运行 pod install 命令,接下来会看到这样的输出:

    Analyzing dependencies
    Downloading dependencies
    Installing Alamofire (1.1.4)
    Generating Pods project
    Integrating client project
    
    [!] From now on use `cocoapodsSample.xcworkspace`.
    

    我们看到 pod 命令,为我们做了这些事情,Analyzing dependencies 是分析我们项目中的库和 Podfile 中列出的库,哪些需要下载,哪些需要更新,等等。

    分析好后,会进行 Downloading dependencies 操作来下载那些需要安装进来的库。当然这过程是完全自动化的。

    然后就会安装下载好的库 Installing Alamofire (1.1.4)

    接下来 CocosPods 会将这些第三方库生成一个单独的 Xcode 项目。

    最后它会创建一个 xcworkspace 文件,将我们的项目和第三方库的项目关联起来。

    注意最后一行输出:

    [!] From now on use `cocoapodsSample.xcworkspace`.
    

    也就是说,在使用了 CocoaPods 后,我们要使用 workspace 来打开项目。那么我们就按着 CocoaPods 的提示来打开 workspace:

    $ open cocoapodsSample.xcworkspace
    

    我们看到 workspace 中的两个项目,一个是我们的 app 项目,另外一个是 cocoaPods 创建的第三方库集成项目:

    我们试一下在项目中使用我们刚刚集成进来的 Alamofire 库:

    编译,并运行。 成功了, 并且我们的 app 正确的在控制台输出了内容。

    我们集成这个库的时候,是不是没有进行任何诸如,下载,拷贝这些操作。只运行了一条命令,随后我们就可以在项目中正常的使用 Alamofire 库了。

    更多文章请访问: www.theswiftworld.com
    更多好文,扫码关注微信公众号:

    更多文章请访问: www.theswiftworld.com
  • 相关阅读:
    web前端的发展态势
    AngularJs 简单入门
    css代码优化篇
    git提交报错:Please make sure you have the correct access rights and the repository exists.
    Activiti工作流框架学习
    遍历map集合的4种方法
    js设置日期、月份增加减少
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    webservice_rest接口_学习笔记
    相互匹配两个list集合+动态匹配${}参数
  • 原文地址:https://www.cnblogs.com/theswiftworld/p/4285293.html
Copyright © 2011-2022 走看看