2014-04-28 30 views
1

我有复杂的JSON处理大量数据,我需要通过仅将必需的映射对象属性发送到服务器来优化网络流量。RestKit 0.20以条件为基础发布对象的属性

为了简单起见可以说我有以下的用户等级:

@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" 
}]; 

进行登录呼叫我需要张贴只是用户名&密码如下JSON :

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

虽然对于Sig nup调用我需要POST整个用户对象,所以我不能缩小映射字典。我需要应用相同的过程来批量更复杂的JSON。

如何以最佳方式有条件地发送POST调用中的对象的必需属性?

谢谢。

回答

1

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

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

+0

Wain ...我已经尝试过相同的解决方案,但是我收到这个错误..'无法添加请求描述符:现有的描述符已经为'User'类和HTTP方法'*'注册。它不起作用。你能分享代码片段吗?如果你在说别的.. –

+0

不,我的答案是错误的,因为我忘记了这个限制。回答修改。 – Wain

+0

你现在的建议是什么Wain? –