RestKit 0.20在条件基础上发布对象的属性

时间:2014-04-28 18:26:07

标签: ios restkit restkit-0.20

我有复杂的JSON处理大量数据,我需要通过仅向服务器发送映射对象的必需属性来优化网络流量。

为简单起见,我假设我有以下用户类:

@property (nonatomic, retain) NSString *email;
@property (nonatomic, retain) NSString *fname;
@property (nonatomic, retain) NSString *password;
@property (nonatomic, retain) NSString *profilePic;
@property (nonatomic, retain) NSString *sname;
@property (nonatomic, retain) NSString *status;
@property (nonatomic, retain) NSString *token;
@property (nonatomic, retain) NSString *username;
@property (nonatomic, retain) NSNumber *isLoggedIn;
@property (nonatomic, retain) NSDate *dateCreated;

我的属性映射字典如下:

[dic addEntriesFromDictionary:@{
     @"fname": @"fname",
     @"sname": @"sname",
     @"profilePic": @"profilePic",
     @"email": @"email",
     @"username": @"username",
     @"password": @"password",
     @"status": @"status",
     @"token": @"token",
     @"isLoggedIn": @"isLoggedIn",
     @"dateCreated": @"dateCreated"
 }];

对于Signin通话,我只需发布用户名&密码如下JSON:

{
  "user": {
    "password": "password",
    "username": "demouser"
  }
}

对于注册调用,我需要POST整个User对象,所以我不能缩小映射字典。我需要将相同的过程应用于更复杂的JSON。

如何以最佳方式在条件基础上在POST调用中发送对象的必需属性?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以自由地为同一类/实体类型创建多个映射 - 没有限制。每个映射都与其他映射/请求描述符/响应描述符相关联,这是您需要专注于识别和唯一性的地方。

最简单的方法是让一个请求映射覆盖所有属性,其类为NSDictionary。然后,要将此映射用于请求,请使用KVC(dictionaryWithValuesForKeys:)仅将感兴趣的键从真正的源对象提取到字典中,然后您可以将其提供给对象管理器以进行映射和传输。