安装RestKit,参考cocoapods的使用说明
1.
编辑.pch文件,加入:
#import <RestKit/RestKit.h>
2.
Model对象(Domain对象)
StatusItem.h
@interface StatusItem : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *itemDescription;
@property (nonatomic, strong) NSString *timestamp;
@property (nonatomic, strong) NSString *eventMessage;
@property (nonatomic, strong) NSString *statusName;
@property (nonatomic, strong) NSString *imageUrl;
@end
StatusItem.m
@implementation StatusItem
- (NSString *)description
{
return [NSString stringWithFormat:@"%@ - %@",self.name, self.eventMessage];
}
@end
3.
利用RestKit动态获取WebService的返回数据,并根据映射关系转化成本地Model对象。
- (void)refresh
{
// Setup the object mapping
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[StatusItem class]];
// From JSON -> To property
[mapping addAttributeMappingsFromDictionary:@{
@"name" : @"name",
@"description" : @"itemDescription",
@"current-event.status.name" : @"statusName",
@"current-event.status.image" : @"imageUrl",
@"current-event.timestamp" : @"timestamp",
@"current-event.message" : @"eventMessage",
}];
// Define the response mapping
// Map response with any status code in 2xx
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor
responseDescriptorWithMapping:mapping
method:RKRequestMethodAny
pathPattern:@"/api/v1/services"
keyPath:@"services"
statusCodes:statusCodes];
// Prepare the request operation
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://status.twilio.com/api/v1/services"]];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request
responseDescriptors:@[responseDescriptor]];
// Set on completion and on error blocks
[operation
setCompletionBlockWithSuccess:^(RKObjectRequestOperation
*operation, RKMappingResult *result)
{
NSLog(@"Loaded items: %@", [result array]);
}
failure:^(RKObjectRequestOperation
*operation, NSError *error)
{
NSLog(@"Failed with error: %@", [error localizedDescription]);
}];
[operation start]; //Fire the request
}