Как правильно сопоставить объекты в RestKit с помощью следующего ответа JSON - PullRequest
1 голос
/ 26 августа 2011

На этот вопрос есть 2 части, обе о RestKit:

  1. Как мы можем опубликовать 2 значения адреса электронной почты и пароля, и обработать ответ, используя объект сопоставления
  2. Как мы можем отобразить 2 объекта в ответе

Ожидается следующий ответ JSON:

{ 
    "code" : 0,
    "error_string" : "OK.",
    "message" : "OK.",
    "token" : { 
        "app_id" : "1",
        "created" : "2011-08-19 11:30:31",
        "token" : "ecb8862189974248233dfcc7e8fc1e4514e16972",
        "user_id" : "1"
    },
    "user" : { 
        "avatar_url" : "",
        "created" : "2011-08-19 11:29:21",
        "email" : "x@x.com",
        "forename" : "Matthew",
        "gender" : "M",
    }
}

Как правильно отобразить это, у нас есть настройка класса для пользователя и токена, но все примеры, которые я видел, не показывают что-то подобное, когда в ответе есть два сегмента, код у нас на данный момент:

// Mapping for User
RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[User class]];
[userMapping mapKeyPath:@"created" toAttribute:@"created"];
[userMapping mapKeyPath:@"avatar_url" toAttribute:@"avatarURL"];
[userMapping mapKeyPath:@"gender" toAttribute:@"gender"];
[userMapping mapKeyPath:@"email" toAttribute:@"email"];
[[RKObjectManager sharedManager].mappingProvider setMapping:userMapping forKeyPath:@"user"];

// Mapping for Token
RKObjectMapping* tokenMapping = [RKObjectMapping mappingForClass:[Token class]];
[tokenMapping mapAttributes:@"user_id", @"app_id", @"token", @"created", nil];
[[RKObjectManager sharedManager].mappingProvider setMapping:tokenMapping forKeyPath:@"token"];

// Load the object model via RestKit
[[[RKObjectManager sharedManager] client] setValue:@"xxxxxxxxxxxxxxxxxxx" forHTTPHeaderField:@"X-API-KEY"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/users/authenticate/"  delegate:self];

Цените любую помощь, которую вы можете оказать в этом, любящий RestKit до сих пор!

1 Ответ

0 голосов
/ 26 августа 2011

Вы должны иметь все необходимое для этого отображения. Возможно, вы захотите использовать функцию обратного вызова didLoadObjectDictionary: Delegate, чтобы можно было идентифицировать объекты по сопоставляемому keyPath. В противном случае, если вы используете didLoadObjects :, вам просто нужно получить массив с объектом User & Token внутри него.

...