测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | BSD |
发布时间最后发布 | 2015年3月 |
由Yuru Taustahuzau,Nikita Leonov维护。
一套利用额外维度优化的可重用组件,增加了属性式编程功能。
核心 - 对 Foundation 类的属性、反射和辅助扩展的支持。
服务 - 实现 Service Locator 模式,集中化的单例替代方案。
序列化 - 基于属性的 JSON 和 XML 解析器,便于 DOM (反)序列化。
网络服务 - 基于属性的 HTTP 客户端 API。
连接到测试 HTTP 服务器,该服务器可从您发送的头部返回 JSON,如下所示
RF_ATTRIBUTE(RFWebService, serviceRoot = @"http://headers.jsontest.com/")
@interface JsonTestWebClient : RFWebServiceClient
RF_ATTRIBUTE(RFWebServiceCall, method = @"GET", prototypeClass = [MyWebServiceResponse class])
RF_ATTRIBUTE(RFWebServiceHeader, headerFields = @{@"Text" : @"A lot of text",
@"Number" : [@1434252.234 stringValue],
@"Date" : [[NSDate dateWithTimeIntervalSince1970:100000000] description]})
- (id<RFWebServiceCancellable>)echoRequestHeadersAsJSONWithSuccess:(void(^)(MyWebServiceResponse result))successBlock failure:(void(^)(NSError *error))failureBlock;
@end
然后我们定义模型
RF_ATTRIBUTE(RFSerializable)
@interface MyWebServiceResponse : NSObject
RF_ATTRIBUTE(RFSerializable, serializationKey = @"Text")
@property NSString *text;
RF_ATTRIBUTE(RFSerializable, serializationKey = @"Number")
@property NSNumber *number;
RF_ATTRIBUTE(RFSerializable, serializationKey = @"Date")
RF_ATTRIBUTE(RFSerializableDate, format = @"yyyy-MM-dd HH:mm:ss Z")
@property NSDate *date;
@end
并通过 RFServiceProvider 获取 JsonTestWebClient 的单例实例
@interface RFServiceProvider (JsonTestWebClient)
RF_ATTRIBUTE(RFService, serviceClass = [JsonTestWebClient class])
+ (JsonTestWebClient *)jsonTestWebClient;
@end
现在我们可以使用它了
[[RFServiceProvider jsonTestWebClient] echoRequestHeadersAsJSONWithSuccess:^(MyWebServiceResponse *result) {
NSLog(@"%@", result);
} failure:^(NSError *error) {
NSLog(@"Something terrible happened! Here are details : %@", error);
}];
ROAD 需要 iOS 5.0 及以上。未测试与 4.3 及更早版本兼容性。
ROAD 最初设计为使用 ARC。
通过 CocoaPods 是推荐的方式 integrate ROAD。除了标准 pod 依赖配置外,还需要如以下所示 pod_install 钩子。一个典型的 Podfile 会如下所示
pod 'ROADFramework'
post_install do |installer|
require File.expand_path('ROADConfigurator.rb', './Pods/libObjCAttr/libObjCAttr/Resources/')
ROADConfigurator::post_install(installer)
end
分别使用组件
如果您只想嵌入框架中的特定组件,使用 CocoaPods 也可以完成。
pod 'ROADFramework/ROADServices'
pod 'ROADFramework/ROADWebService'
关于 ROAD 集成内部结构以及高级主题(如与预定义工作区、多个项目或目标集成)的详细信息,请参阅 文档。
以下组件的用户文档可在 文档 文件夹中找到
类参考可在 cocoadocs.org 上找到
ROAD 在 BSD-3 许可证的条款下提供。打开随此分发一起提供的 LICENSE 文件,以查看许可证的完整文本。
您可以通过以下三种方式帮助我们