ReactiveCocoa(1) :环境集成

640 查看

众所周知, ReactiveCocoa 是由 Github 工程师主导设计的一款 FRP 应用框架, 关于 RACFRP 在这里不再多作赘述。今天主要来介绍下RAC的引入。

引入方式

  • 手动引入
  • CocoaPods
  • Carthage

引入前准备

本教程使用 Xcode 8Xcode 7.3.1 同时讲解(因为Xcode8已经发布GM版本, 因此主要讲解Xcode8的适配工作)

新建工程 起名 RACImport
11djskjflsj_fgdkjf

手动引入

在手动引入之前, 我们先来看看官方给出的引入流程。

12rac%e5%ae%98%e6%96%b9%e5%af%bc%e5%85%a5%e6%b5%81%e7%a8%8b2

添加 ReactiveCocoa 的源到你的工程中, 需要使用到 Git 子模块

这里说到了添加 Git 子模块, 关于添加 Git 以及添加 Git 子模块在这都不作不详细赘述。
首先在工程目录中, 添加一个 Git 仓库:
13git%e6%89%80%e6%94%be%e7%9b%ae%e5%bd%95
对应到终端
14%e7%bb%88%e7%ab%af%e8%bf%9b%e5%85%a5%e5%b7%a5%e7%a8%8b

调用git初始化命令

显示初始化成功如下图

15%e4%bb%93%e5%ba%93%e5%88%9d%e5%a7%8b%e5%8c%96

然后调用命令

开始下载 Git 子模块
16djskjflsj_fgdkjf

下载完毕后, 提示如下:
17djskjflsj_fgdkjf

此时, 官方给出的导入步骤中的第一步完成

运行子模块更新命令

执行以下代码, 更新子模块

运行结果如下:

18djskjflsj_fgdkjf

其中更新完成后, 会多出如下几个依赖库:

19djskjflsj_fgdkjf

注: 最新版本中添加了, ReactiveSwift , 并且支持 Xcode 8

Xcode 8

注: 不需做任何操作

Xcode 7.3.1

如果是 Xcode 7.3.1 需要注意, 工程中的 ResultReactiveSwift 都是基于 Swift3 的。语法会有很大变化
因此, 需要从 Git 分支中, Checkout 出旧 tag 版本的 ReactiveCocoa
查看 ReactiveCocoa Git仓库tag 找到 v4.2.2。

进入到 ReactiveCocoa 的目录
20djskjflsj_fgdkjf

进入目录后

然后查看工程目录中的 Cartfile 文件, 文件内容如下:

接下来执行

执行过程如下图

21djskjflsj_fgdkjf

执行完成后, 此步骤完成

拖拽 .xcodeproj 文件到你的工程中

Xcode 8

官方给出的文档中, 已经说明需要将 ReactiveCocoa.xcodeproj, Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcodeproj, and Carthage/Checkouts/Result/Result.xcodeproj 拖拽到你自己的工程中。 这三个文件相互依赖, 因此缺一不可。

在工程中创建一个 Group 起名 Frameworks

导入ReactiveCocoa.xcodeproj

22djskjflsj_fgdkjf

导入ReactiveSwift.xcodeproj

23djskjflsj_fgdkjf

导入Reuslt.xcodeproj

24djskjflsj_fgdkjf

Xcode 7.3.1

官方给出的文档中, 已经说明需要将 ReactiveCocoa.xcodeproj and Carthage/Checkouts/Result/Result.xcodeproj 拖拽到你自己的工程中。 ( Xcode 7.3.1 的版本中没有 ReactiveSwift.xcodeproj )

导入ReactiveCocoa.xcodeproj

25djskjflsj_fgdkjf

导入Reuslt.xcodeproj

26djskjflsj_fgdkjf

工程目录的 “General” 的 “Embedded Binaries”添加Framework

注:这里因为一般是iOS开发因此举例导入都是iOS的Framework框架

Xcode 8

分别引入 Result.framework, ReactiveCocoa.framework, ReactiveSwift.framework

Xcode 7.3.1

分别引入 Result.framework, ReactiveCocoa.framework

28djskjflsj_fgdkjf

引入Framework完成后, 编译完成如果没有错误, 该步骤完成。

工程不包含Swift代码, 设置EMBEDDED_CONTENT_CONTAINS_SWIFT

设置 Bulid Settings 中的 EMBEDDED_CONTENT_CONTAINS_SWIFTYES

验证

上述几步完成后, 引入 ReactiveCocoa 框架

编译, 运行

查看打印结果, 如果是 暮落晨曦 , 证明框架导入成功。

CocoaPods引入

使用 CocoaPods 引入时, 其实相对于手动导入就简单很多。

首先, 在引入 ReactiveCocoa 之前, 先来看看 RAC 最低支持的 iOS 版本是多少。
RAC的支持的版本

创建并修改Podfile

明确了最低支持的版本, 在需要使用 CocoaPods 的工程中activeCocoa 之前, 先来看看 RAC 最低支持的 iOS 版本是多少。
RAC的支持的版本

创建并修改Podfile

明确了最低支持的版本, 在需要使用 CocoaPods 的工程中 trong> 在这里不再多作赘述。今天主要来介绍下RAC的引入。

引入方式

  • 手动引入
  • CocoaPods
  • Carthage

引入前准备

本教程使用 Xcode 8Xcode 7.3.1 同时讲解(因为Xcode8已经发布GM版本, 因此主要讲解Xcode8的适配工作)

新建工程 起名 RACImport
11djskjflsj_fgdkjf

手动引入

在手动引入之前, 我们先来看看官方给出的引入流程。

12rac%e5%ae%98%e6%96%b9%e5%af%bc%e5%85%a5%e6%b5%81%e7%a8%8b2

添加 ReactiveCocoa 的源到你的工程中, 需要使用到 Git 子模块

这里说到了添加 Git 子模块, 关于添加 Git 以及添加 Git 子模块在这都不作不详细赘述。
首先在工程目录中, 添加一个 Git 仓库:
13git%e6%89%80%e6%94%be%e7%9b%ae%e5%bd%95
对应到终端
14%e7%bb%88%e7%ab%af%e8%bf%9b%e5%85%a5%e5%b7%a5%e7%a8%8b

调用git初始化命令

显示初始化成功如下图

15%e4%bb%93%e5%ba%93%e5%88%9d%e5%a7%8b%e5%8c%96

然后调用命令

开始下载 Git 子模块
16djskjflsj_fgdkjf

下载完毕后, 提示如下:
17djskjflsj_fgdkjf

此时, 官方给出的导入步骤中的第一步完成

运行子模块更新命令

执行以下代码, 更新子模块

运行结果如下:

18djskjflsj_fgdkjf

其中更新完成后, 会多出如下几个依赖库:

19djskjflsj_fgdkjf

注: 最新版本中添加了, ReactiveSwift , 并且支持 Xcode 8

Xcode 8

注: 不需做任何操作

Xcode 7.3.1

如果是 Xcode 7.3.1 需要注意, 工程中的 ResultReactiveSwift 都是基于 Swift3 的。语法会有很大变化
因此, 需要从 Git 分支中, Checkout 出旧 tag 版本的 ReactiveCocoa
查看 ReactiveCocoa Git仓库tag 找到 v4.2.2。

进入到 ReactiveCocoa 的目录
20djskjflsj_fgdkjf

进入目录后

然后查看工程目录中的 Cartfile 文件, 文件内容如下:

接下来执行

执行过程如下图

21djskjflsj_fgdkjf

执行完成后, 此步骤完成

拖拽 .xcodeproj 文件到你的工程中

Xcode 8

官方给出的文档中, 已经说明需要将 ReactiveCocoa.xcodeproj, Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcodeproj, and Carthage/Checkouts/Result/Result.xcodeproj 拖拽到你自己的工程中。 这三个文件相互依赖, 因此缺一不可。

在工程中创建一个 Group 起名 Frameworks

导入ReactiveCocoa.xcodeproj

22djskjflsj_fgdkjf

导入ReactiveSwift.xcodeproj

23djskjflsj_fgdkjf

导入Reuslt.xcodeproj

24djskjflsj_fgdkjf

Xcode 7.3.1

官方给出的文档中, 已经说明需要将 ReactiveCocoa.xcodeproj and Carthage/Checkouts/Result/Result.xcodeproj 拖拽到你自己的工程中。 ( Xcode 7.3.1 的版本中没有 ReactiveSwift.xcodeproj )

导入ReactiveCocoa.xcodeproj

25djskjflsj_fgdkjf

导入Reuslt.xcodeproj

26djskjflsj_fgdkjf

工程目录的 “General” 的 “Embedded Binaries”添加Framework

注:这里因为一般是iOS开发因此举例导入都是iOS的Framework框架

Xcode 8

分别引入 Result.framework, ReactiveCocoa.framework, ReactiveSwift.framework

Xcode 7.3.1

分别引入 Result.framework, ReactiveCocoa.framework

28djskjflsj_fgdkjf

引入Framework完成后, 编译完成如果没有错误, 该步骤完成。

工程不包含Swift代码, 设置EMBEDDED_CONTENT_CONTAINS_SWIFT

设置 Bulid Settings 中的 EMBEDDED_CONTENT_CONTAINS_SWIFTYES

验证

上述几步完成后, 引入 ReactiveCocoa 框架

编译, 运行