RestKit 0.2,有多种方式可以进行GET,POST,PUT请求

时间:2012-12-18 06:26:51

标签: ios restkit restkit-0.20

我对使用restkit的方式感到有些困惑,似乎有多种方法可以做同样的事情,在我满足之前只是弄乱它直到它工作,但现在他已经改变了框架和在0.20.x中的使用,我花了很多时间来转换我的代码,现在花费更多的时间试图让它像以前一样工作。我已经仔细研究了一些例子和那些人们声称为他们工作的例子,对我来说没那么多,所以某处肯定会有所不同,所以也许有人可以告诉我以下方面的不同之处得到这个数据至少例如1& 2(失败,但这是关于restkit github的问题)

response.body={
"player": [
 {
  "_id": "50585c86ded998e77a000002"
 }
]
}

1

[[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上放弃自己的exmaple

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];

我相信还有很多其他的方法,我怀疑是否有人可以确认这是你应该设置你的路径的方式以及你是否使用一种方法而不是另一种方法是由你试图映射的数据集决定的它的格式。然后,它的一些看起来像是完全相同的不同方式?感谢

1 个答案:

答案 0 :(得分:5)

两种方式都是正确的。实际上,第一个更好,因为它将所有配置集中在RKObjectManager中。对于基于RestKit的项目,我强烈建议您使用ObjectManager方式:)

您甚至可以更进一步,开始使用路线来保持代码清洁,请参阅有关该部分的Wiki:)

希望有所帮助