2013-10-23 106 views
0

我已經實現了一個Restkit映射到包含'timestamp'屬性的核心數據。我的本地數據模型支持需要使用來自JSON的時間戳填充的'day','month'和'year'整數屬性。我不確定在哪裏以及如何做到這一點。如何將附加屬性添加到未在JSON中的RestKit映射中

我的映射:

RKEntityMapping *mediaMapping = [[VSObjectStore shared] mappingForEntityForName:@"Media"]; 
    [mediaMapping setIdentificationAttributes:@[@"id"]]; 

    // Remove any relationships 
    NSMutableArray *mediaMethods = [NSMutableArray arrayWithArray:[_VSMedia propertyNames]]; 
    [mediaMapping addAttributeMappingsFromArray:mediaMethods]; 

預先感謝您的幫助!

+0

您可能想要包含您正在使用的RestKit版本的詳細信息。以及時間戳記的細節。 – Wain

回答

1

你應該改變你的數據模型(或者至少你的方法)。將NSDate實例存儲在您的模型中 - 這是最準確和最受支持的選擇。然後映射應該自動發生。如果你仍然想要你的日期,月份和年份的3個屬性,那就好了,但是讓它們派生(瞬態),並在NSDate時間戳需要(或讀取/保存)時得到它們。

+0

我最終從我的模型中刪除了其他屬性,並使用複合謂詞來獲取我需要的內容,而不是分別拉日,月,年。謝謝。 – bevinlorenzo

1

應實現RKObjectLoaderDelegate以下方法:

- (void)objectLoader:(RKObjectLoader*)loader willMapData:(inout id *)mappableData;

此方法分析數據之後,但映射之前調用。因此,您可以修改數據以添加日,月和年。

該代碼將是這個樣子:

- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout id *)mappableData 
{ 
    NSMutableDictionary *mediaData = *mappableData; 
    // parse timestamp here 
    [mediaData setObject:day forKey:@"day"]; 

} 

和鍵添加到您的映射列表:

NSMutableArray *mediaMethods = [NSMutableArray arrayWithArray:[_VSMedia propertyNames]]; 

[mediaMethods addObject:@"day"] 



[mediaMapping addAttributeMappingsFromArray:mediaMethods]; 
+0

我確信這種方法可行,但我將不得不接受@Wain的答案,因爲我認爲他改變模型是正確的。 – bevinlorenzo

相關問題