Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@reikubonaga

RestKit使ったデータ取得

More than 5 years have passed since last update.

概要

  • ObjectManagerというにdescriptorを追加して利用する。
  • descriptorには、どのパスから受け取ったデータをどうモデルにマッピングするかを定義している

ObjectManagerにdescriptorを追加

  • RKObjectManagerを継承したオブジェクト(ex. WTDObjectManager)をinitするタイミングで、descriptorを追加している。
- (instancetype)init
{
    self = [super initWithHTTPClient:[AFHTTPClient new]];
    if (self) {
        // add descriptor
    }
    return self;
}
  • descriptorには、addResponseDescriptorsFromArrayaddRequestDescriptorsFromArrayがあって、前者が受け取るデータを後者が送信するデータをマッピングしている。
[self addResponseDescriptorsFromArray:@[]];
[self addRequestDescriptorsFromArray:@[]];

descriptorの作り方

  • descriptorの作り方は、以下のようにマッピングのルールとリクエストのmethodとpathとkeyPathとstatusCodeを設定する。
[RKResponseDescriptor responseDescriptorWithMapping:responseMapping
                                                  method:RKRequestMethodGET
                                             pathPattern:kAPIPath
                                                 keyPath:kAPIResponseKeyPath
                                             statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]
  • keyPathは、以下のようなuser jsonをuser modelにマッピングするとき、dataと設定する
{
   data: {
      user : {
          id : "1",
          name: "rei kubonaga",
      }
   }
}
  • mappingについては、モデルに定義すると分かりやすい。RKObjectMappingmappingForClassを利用する。
@implementation User

+ (RKObjectMapping *)responseMapping
{
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];
    [mapping addAttributeMappingsFromDictionary:@{
                                                  @"id":                           @"userID",
                                                  @"name":                         @"name",
                                                  }];
    return mapping;
}

@end

参考ページ

15
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
reikubonaga
MC DigitalのCTO。Ex-Wantedly Visitの開発チームのリーダ。 チームのメンバーやインターンに伝えたいことをついでにqiitaにも書いていこうと思っています。 MC Digitalはエンジニア絶賛募集中です!
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?