CollectionUtils-AFNetworking-1.3 1.0.1

CollectionUtils-AFNetworking-1.3 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

kishikawa katsumi维护。



 
依赖
CollectionUtils>= 0
AFNetworking~> 1.3.3
 

CollectionUtils License MIT

Analytics

Objective-C集合类的一些实用工具。

CollectionUtils/Compact

NSArray和NSDictionary的子类,可以递归地自动移除所有NSNull值,而性能损失很小。
这对于从网络服务返回的JSON非常有用。

使用方法

从数组中移除NSNull值

NSArray *array = @[@"0", @"1", [NSNull null], @"2", [NSNull null], @"3"];
NSArray *compactArray = [array cu_compactArray];
//=> ["0", "1", "2", "3"]

从字典中移除NSNull值

NSDictionary *dictionary = @{@"one": @"1",
                             @"null": [NSNull null],
                             @"two": @"2",
                             @"three": @"3"};
NSDictionary *compactDictionary = [dictionary cu_compactDictionary];
 //=> {"one": "1", "two": "2", "three": "3"}

默认递归地移除所有NSNull值

NSArray *array = @[@"0",
                   @"1",
                   [NSNull null],
                   @"2",
                   @{@"one": @"1",
                     @"null": [NSNull null],
                     @"two": @"2",
                     @"three": @"3"},
                   @"4"];
NSMutableArray *compactArray = [array cu_compactArray];
//=> ["0", "1", "2", {"one": "1", "two": "2", "three": "3"}, "4"]

从网络服务返回的JSON中移除所有NSNull值

id object = [NSJSONSerialization JSONObjectWithData:data options:opt error:error];
id result =  [object cu_compactJSONObject];

CUJSONSerialization是一个方便的类,用于从JSON数据中移除所有NSNull值

id result = [CUJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

AFNetworking 补充

CUJSONResponseSerializer(用于AFNetworking 2.x)

安装

pod "CollectionUtils-AFNetworking"

使用方法

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [CUJSONResponseSerializer serializer];

[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

CUJSONRequestOperation(用于AFNetworking 1.x)

安装

pod "CollectionUtils-AFNetworking-1.3"

用法

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/resources.json"]];
CUJSONRequestOperation *operation = [CUJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"JSON: %@", JSON);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSLog(@"Error: %@", error);
}];
[operation start];
AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://example.com/"]];
[client registerHTTPOperationClass:[CUJSONRequestOperation class]];
[client setDefaultHeader:@"Accept" value:@"application/json"];

[client getPath:@"resouce.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

轻微性能损失

工作原理

CUCompactArrayCUCompactDictionary 只是对原始数组/字典做了包装,使其表现得好像没有 NSNull 值。

对于嵌套集合中的 NSNull 值的移除被延迟到实际访问到嵌套数组/字典时才进行。
这个过程每次只对一层进行。

要求

  • iOS 4.3 或更高版本
  • OS X 10.6 或更高版本

安装

如果您想使用 AFNetworking 扩展,请添加以下行

pod "CollectionUtils-AFNetworking"

如果您使用的是较老版本的 AFNetworking,

pod "CollectionUtils-AFNetworking-1.3"

作者

kishikawa katsumi,[email protected]

许可协议

CollectionUtils 在 MIT 许可协议 下提供。有关更多信息,请参阅 LICENSE 文件。