2012-12-18 10 views
11

Restkitを使用する方法についてちょっと混乱しています。同じことをする方法が複数あるようです今まで彼は0.20.xでフレームワークと使用法を変更しました。私はコードを変換し、以前と同じように動作させるためにさらに時間を費やすのに多くの時間を費やしました。そして、私はいくつかの例やそのようなもの、そして人々がそれらのために働くと主張するものを求めてきたので、私のためにそれほど役に立たないので、どこかに違いがなければならないでしょう。 (失敗したが、それがrestkit githubの上の問題のためである)RestKit 0.2、GET、POST、PUTリクエストを行うための複数の方法

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

1.

[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Player class] pathPattern:@"player/fbid/:fID" method:RKRequestMethodGET]]; 

そして、あなたのプレーヤー、このような何かを得るために、少なくとも例1 & 2のためにこのデータを取得します:

Player *player = [Player new]; 
player.playerID = 2; 
[[RKObjectManager sharedManager] getObject:player path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) 
{ 
// Request 
} failure:nil]; 

このような応答記述子を使用します。

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

を独自exmapleをブレイクスそして、私は他の多くの方法があると確信して、私の疑いあなたのパスを設定する方法と、ある方法を別の方法で使用するかどうかは、マップしようとしているデータセットとその形式によって非常に強く決定されます。それではまた、同じことをする別の方法のように見えるものもあります。ありがとう

+1

少し混乱して、それを使用する方法についてはまだ私はこれまで出くわしました:) –

答えて

5

双方とも正しいです。実際、RKObjectManagerにすべての設定を集中させるので、最初の方が優れています。 RestKitに基づいたプロジェクトの場合は、ObjectManagerの方法を使用することを強くお勧めします。

さらに進んでコードをきれいにするためにルートを使用することもできます。

希望するそれは助けてください

+0

idが2で名前がjamesであるプレーヤーを得る方法はありますか? –

関連する問題