RestKit 是一个开源的 objective-c 框架,允许在 iOS 和 Mac OS X 的 Objective-C 中与 RESTful Web 服务进行交互,包含简单的 HTTP request/response API ,带有强大的对象映射系统用于减少代码长度。RestKit 可降低 JSON/XML 的处理的资源消耗,支持通过 SBJSON 和 YAJL 进行 JSON 解析。
RestKit 官网:http://restkit.org/
下面的例子我们是基于RestKit v0.10.1 和XCode 4.4。一定要注意版本号,我曾经碰到过XCode 4.3.2版本用RestKit做的一个功能,在XCode4.3.3下就不能用,报各种诡异的错误问题。
我们项目中引用RestKit可以有两种方法:
1、引用静态库(*.a文件)
2、Cross-Project Reference(跨项目引用)
下面分别给出例子。
引用静态库
获得静态库
1、从官网下载源码压缩包,这里下载的是 v0.10.1 的压缩包,解压缩。
2、解压缩后,对应的目录下有项目文件: RestKit.xcodeproj ,打开它。
3、修改 Active Scheme
为何选择这个,是因为这个可以为我们生成静态库 *.a 文件。
我们在下图中,可以清晰的看到RestKit这个构建目标(Target)指向的是一个静态库。 构建目标是指定了一系列的编译和连接设置,对于静态库就是生成一个.a文件。
4、Product -> Build 编译项目
在 Build 目录下的 Products 目录下可以看到 .a 文件:libRestKit.a
相关技术参看: http://www.cnblogs.com/speeding/archive/2011/09/29/2195252.html
现在我们准备好了静态库。
引用静态库
新建一个我们自己的项目,这里我的项目名叫testRestKit02,
1、把我们上步编译好的静态库和头文件copy到我们项目目录下,方便管理使用。
如下图,一个头文件目录和一个静态库*.a文件。
2、在这个工程的build phases中,将libtestlib.a加到link Binary With Libraries中。
参考:http://www.cnblogs.com/speeding/archive/2011/09/29/2195252.html
3、Link Libraries 中增加RestKit需要的framework:
这些包括:
- CFNetwork.framework – 需要网络的支持.
- SystemConfiguration.framework – 需要检测网络是否可用.
- MobileCoreServices.framework – RestKit必须的。自动检测上传文件的MIME类型。
- CoreData.framework – RestKit必须的。支持CoreData。
- Security.framework
- QuartzCore.framework
- libxml2.dylib
4、配置项目的 Header Search Paths
在项目的Build Settings中,设置头文件和库文件的搜索目录
这里我们的设置的搜索路径如下:
搜索路径 | 值 |
Header Search Paths | "$(SRCROOT)/testRestKit02/" |
library Search Paths | "$(SRCROOT)/testRestKit02/" $(inherited) |
5、Other Linker Flags
在 Build Settings 项的 other linker flags 中输入 -ObjC -all_load
6、在项目中引用需要的头文件,如下
#import <RestKit/RestKit.h>
#import <RestKit/CoreData.h>// If you are using Core Data…
7、编译项目,没有错误,这样我们就完成了对RestKit的引用。
跨项目引用
1、从官网下载源码压缩包,这里下载的是 v0.10.1 的压缩包,解压缩。
2、新建一个自己的项目,这里项目名叫:testRestKit03
3、拖动 RestKit.xcodeproj 文件到我们的项目,
注意需要拖动testRestKit03的子项目的位置。
拖动好后的位置图如下:
4、 Other Linker Flags
在 Build Settings 项的 other linker flags 中输入 -ObjC -all_load
注意,如果你运行时收到错误:selectors not being found 可以试图删除 -all_load
5、设置头文件搜索目录
$(BUILT_PRODUCTS_DIR)/http://www.cnblogs.com/Headers
6、在Build Phases 的Target Dependencies 中增加引用项目的静态库。如下:
选择界面:
增加好后的界面:
当然,你也可以通过 targets 的summary栏的Linked Frameworks and Libraries来添加。参看:
7、Link Libraries 中增加RestKit需要的framework,跟上面的做法一样:
Linked Frameworks and Libraries 中也一样可以添加。
下面根据你的操作系统是iOS,还是OS X两个二选一,
- libRestKit.a - RestKit for iOS static library
- RestKit.framework - RestKit for OS X framework
同样,下面需要增加的要根据操作系统进行选择,没有表明的是适用于所有系统。
- CFNetwork.framework on iOS
- CoreData.framework
- MobileCoreServices.framework on iOS or CoreServices.framework on OS X
- Security.framework
- SystemConfiguration.framework
- QuartzCore.framework on iOS
- libxml2.dylib
7、在项目中引用需要的头文件,如下
#import <RestKit/RestKit.h>
#import <RestKit/CoreData.h>// If you are using Core Data…
8、编译项目,没有错误,这样我们就完成了对RestKit的引用。
这里没有设置头文件、库文件的搜索路径,是因为系统默认替我们生成的就是正确的。
参考:https://github.com/RestKit/RestKit/wiki/Installing-RestKit-in-Xcode-4.x
参考资料:
http://mobile.tutsplus.com/tutorials/iphone/restkit_ios-sdk/