我有点困惑如何使用restkit,似乎有多种方法可以做相同的事情。以前,我很满足于一遍又一遍地摆弄它直到它起作用,但现在他已经改变了框架和使用方式到0.20.x,我花了很多时间将我的代码转换过来,现在又花了更多的时间尝试让它像以前一样工作。我搜索了一些例子和资料,但人们声称可行的那些例子对我并没有多大帮助,所以肯定是有区别的,也许有人能告诉我在获取此数据时以下两种方式的区别(示例1和2会失败,但这是关于restkit github上的问题)。
response.body={
"player": [
{
"_id": "50585c86ded998e77a000002"
}
]
}
[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Player class] pathPattern:@"player/fbid/:fID" method:RKRequestMethodGET]];
获得您的播放器,可以尝试以下代码:
Player *player = [Player new];
player.playerID = 2;
[[RKObjectManager sharedManager] getObject:player path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result)
{
// Request
} failure:nil];
2.
使用一个类似如下的响应描述器。
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:playerWtfMappingIn pathPattern:nil keyPath:@"player" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];
[tempPlayer setFbID:[result objectForKey:@"id"]];
[objectManager getObject:tempPlayer path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
{
}
failure:nil];
3.
实际上,这在RestKit wiki上也有Blake自己的例子。
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:articleMapping pathPattern:nil keyPath:@"articles" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
NSURL URL = [NSURL URLWithString:@"http://restkit.org/articles"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
RKLogInfo(@"Load collection of Articles: %@", objects);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
RKLogError(@"Operation failed with error: %@", error);
}];
[objectRequestOperation start];
我相信还有许多其他的方法,我的猜测是,你应该如何设置路径以及你使用哪种方法,很大程度上取决于你尝试映射的数据集及其格式。但有些方式看起来像是做同一件事情的不同方法?谢谢。