使用以下JSON响应在RestKit中映射对象的正确方法是什么?

时间:2011-08-26 13:10:06

标签: iphone objective-c restkit

这个问题有2个部分,都是关于RestKit:

  1. 我们如何发布2个值的电子邮件和密码,并使用对象映射器处理响应
  2. 我们如何在响应中映射2个对象
  3. 我们期待以下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 :(得分:0)

您应该为此映射配置所需的一切。您可能希望使用didLoadObjectDictionary:delegate回调,以便您可以通过mappable keyPath识别对象。否则,如果你使用didLoadObjects:,你应该最后得到一个带有User&的数组。其中的令牌对象。