下面主要说一下 Restkit 在具体项目中怎么应用:
如果看本文有点困难,请先查看这篇教程 :http://www.raywenderlich.com/58682/introduction-restkit-tutorial
Json 数据:
- [
- {
- "id": 7,
- "product":
- {
- "id": 9,
- "userinfo":
- {
- "id": 56,
- "userType": null,
- "userAccount": "2111d'd'd11",
- }
- }
- }
- ]
// initialize AFNetworking HTTPClient
NSURL *baseURL = [NSURL URLWithString:@"http://api/v1"];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
// initialize RestKit
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
// setup object mappings
首先初始化Restkit ,然后定义 Mapping ,如果本地项目只是获取Json 没有用到数据的持久化(core data)建议使用AFNetworking,放弃Restkit。Mapping 的定义:
RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[User class]];
[userMapping addAttributeMappingsFromDictionary:@{
@"id": @"uId",
@"userAccount": @"userAccount"
}];
RKObjectMapping* productMapping = [RKObjectMapping mappingForClass:[Product class]];
[productMapping addAttributeMappingsFromDictionary:@{
@"id": @"proId",
}];
[productMapping addPropertyMapping:[RKRelationshipMapping
relationshipMappingFromKeyPath:@"userinfo"
toKeyPath:@"user"
withMapping:userMapping]];
这是一个关系Mapping ,Product 类里面有个 User类的属性。 relationshipMappingFromKeyPath 是指Json 格式里面的Key,toKeyPath是指你类里面的属性名字。Restkit 使用 Key-value 方式实现json 和 实体的映射 。所以一定要注意Mapping 的key是否正确对应json 。
最后设置Response
RKResponseDescriptor *productresponseDescriptor =
[RKResponseDescriptor responseDescriptorWithMapping:productMapping
method:RKRequestMethodGET
pathPattern:@"products"
keyPath:nil
statusCodes:[NSIndexSet indexSetWithIndex:200]];
[objectManager addResponseDescriptor:productresponseDescriptor];
其中patyPattern 是相对于前面的baseurl的。相当于http://api/v1/products ,注意
pathPattern:@"products" 不能写成athPattern:@"/products" 因为Restkit貌似自动会加上 '/' 。
后面还会补充其他用法,如有理解错误,恳请指正。