ROAD Framework 1.4.3

ROAD Framework 1.4.3

测试已测试
语言语言 Obj-CObjective C
许可证 BSD
发布时间最后发布2015年3月

Yuru TaustahuzauNikita 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 文件,以查看许可证的完整文本。

贡献

您可以通过以下三种方式帮助我们

  • 提出问题。 您发现有什么不符合预期的地方?请告诉我们。
  • 建议新特性。 如果您能想出一个新特性并告诉我们,那就更好了。
  • 编写代码。 我们非常希望能够看到更多针对我们框架的pull请求,但请确保您拥有最新版本。更多信息,请查看贡献指南