2014-01-08 115 views
2

我使用RestKit 0.20將數據映射到核心數據並將其顯示在UITable中。我正在將數據('Activity'對象)寫入mainQueue的ManagedObjectContext,並且它一切正常。現在我需要第二個表格與Future-Activities以及第三個表格與Past-Activities。由於在服務器端完成排序,我需要爲每個表使用一個ManagedObjectContext。我如何處理這個問題並獲得持久數據。 'newChildManagedObjectContextWithConcurrencyType'是我需要使用的嗎?RestKit 0.20和ManagedObjectContexts

+0

對於此,您不需要不同的上下文(真正的持久性存儲)。你需要一些方法來標記你的'活動'對象,以便你知道它們是什麼。你收到的是什麼JSON?你可以使用一些請求元數據嗎? – Wain

+0

我對每種情況(全部,未來或過去)使用不同的Url參數,因此有效負載正好滿足我需要並排序爲asc/desc。但是,如果我顯示過去的活動並點擊未來按鈕,則必須等待新的有效負載顯示未來的活動。如果我已經將數據存儲在持久存儲中,並且沒有更改,那麼用戶甚至不會注意到任何延遲。如果可能的話,這是我的目標。 – Alan

+0

爲了回答你的問題,Json有以下字段:「all_day」「start_time」「end_time」,這樣我就可以使用它們來顯示數據,直到有效負載到達。 – Alan

回答

1

保留一個商店。使用謂詞過濾掉你想要的物品。

如果你可以下載所有的數據(你很樂意這樣做,即使有些數據可能不會被用戶使用),你可以標記它們的用途,那麼這是一個選項。

從RestKit的角度來看,您可以使用元數據在映射過程中標記項目,以便您知道應該如何使用它們(然後對其進行過濾)。這要求您爲該項目添加一個新的密鑰 - 但是,如果一個項目可能在所有響應中,則這會產生問題,因爲這些值會被覆蓋。

要使用的元數據,只需添加像一個新的映射:

@"@metadata.URL": @"requestURL" 

哪裏@metadata.URL是用來做請求的URL和requestURL是你的實體屬性,您可以使用過濾。謂詞將檢查您的類型(「all_day」,「start_time」,「end_time」)contains

+0

我打算帶着這個答案。每個項目都可以從其所有,將來和過去的URL中過濾。更多我不需要做。但是,我如何向RKPaginator發送@ metadata.URL?我看到使用RKMappingOperation的示例,那麼如何連接它們? – Alan

+0

你不知道。元數據可用於映射。分頁創建URL。 – Wain

+0

我必須缺少一些東西:我向我的Activitiy Entity和@「@ metadata.URL」添加了一個字符串屬性'requestURL':@「requestURL」給我的RKEntityMapping。但requestURL爲零且未映射。日誌輸出是:未找到可映射的屬性值keypath'@ metadata.URL' – Alan