看到一位大神的代码,感觉就是:简介、精炼,自愧不如啊。
看到他使用了一个第三方库叫Restkit,感觉不错,有兴趣的朋友可以移步github。用途自己百度。
直接看代码
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];
[mapping addAttributeMappingsFromDictionary:@{
@"missionDescription": @"missionDescription",
@"createTime":@"createTime111"
}];
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodAny
pathPattern:nil
keyPath:@"tasks"
statusCodes:statusCodes];
NSURL *url = [NSURL URLWithString:@"http://10.0.1.222:8080/ulineserver/task/nearby?longitude=12&latitude=12"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
NSArray *arr=[result array];
NSLog(@"The public timeline Tweets: %@", [result array]);
} failure:nil];
[operation start];
下面稍微说明一下
请求返回的数据格式是这样的 json:
响应码
简单说明一下:
1、
[mapping addAttributeMappingsFromDictionary:@{
@"missionDescription": @"missionDescription",
@"createTime":@"createTime111"
}];
也可以 用这个方法
[mapping addAttributeMappingsFromArray:@[@"missionDescription",@"createTime"]];
作用是一样的。上面可以对 属性名称修改。你可以把createTime 改为timer
addAttributeMappingsFromArray则不可以,他里面的数组必须和[self class] 中的属性名称一样,否则会报错。
2、
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptorresponseDescriptorWithMapping:mapping
method:RKRequestMethodAny
pathPattern:nil
keyPath:@"tasks"
statusCodes:statusCodes];
keyPath 是根据json 第一层来决定的。statusCodes不知道什么鬼,可以为nil