11

レストキットの使い方に少し戸惑っています。同じことをする方法は複数あるようです。以前は、それが機能するまでそれをいじって満足していましたが、今では彼はフレームワークと使用法を0.20で変更しました。 .x、そして私は自分のコードを変換するのにかなりの時間を費やし、今では以前のようにそれを機能させるためにさらに多くの時間を費やしています。そして、私はいくつかの例などを探しましたが、人々が彼らのために働いていると主張しているものは、私のためにそれほど多くのことをしていないので、どこかに違いがあるはずです。少なくともこのデータを取得します。たとえば、1と2(失敗しますが、restkit githubでの質問です)

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

1.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.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.3。

または、実際には、RestKitwikiでブレイクス自身の例を示しています

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

そして、他にも多くの方法があると確信しています。誰かがパスを設定する方法と、ある方法を別の方法で使用するかどうかは、マップしようとしているデータセットとその形式によって非常に強く決定されるということを誰かが確認できるのではないかと思います。 。それからまた、それのいくつかはまったく同じことをする別の方法のようにも見えますか?ありがとう

4

1 に答える 1

5

どちらの方法も正しいです。実際、最初のものは、すべての構成をRKObjectManagerに一元化するため、さらに優れています。RestKitに基づくプロジェクトの場合、ObjectManagerの方法を使用することを強くお勧めします:)

さらに一歩進んで、コードをクリーンに保つためにルートの使用を開始することもできます。その部分についてはwikiを参照してください:)

それが役に立てば幸い

于 2012-12-20T04:31:53.837 に答える