2014-04-28 34 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? –