我正在使用集合視圖來顯示從服務器接收的數據。返回預訂的JSON數組是像這樣:將NSIndexPath映射到數據標識符
[
{
"id": 13644766,
"check_in": "2014-04-22",
"check_out": "2014-04-29",
"property_id": 1980
},
{
"id": 13644763,
"check_in": "2014-04-22",
"check_out": "2014-04-29",
"property_id": 1978
},
{
"id": 13644761,
"check_in": "2014-04-22",
"check_out": "2014-04-29",
"property_id": 2591
},
{
"id": 13644764,
"check_in": "2014-04-22",
"check_out": "2014-04-29",
"property_id": 1978
}
]
我使用的集合視圖中顯示的數據,並必須實現UICollectionViewDataSource協議。更具體地說,一個部分擁有相同的property_id的所有預訂。所以我不得不做一個數據轉換將json數組映射到節和項。在斯威夫特後deserializingJSON和數據轉換它看起來像這樣(關鍵是PROPERTY_ID和價值是預訂的該PROPERTY_ID數組):
[
1980: [["id": 13644766, "check_in": "2014-04-22", "check_out": "2014-04-29"]],
1978: [
["id": 13644763, "check_in": "2014-04-22", "check_out": "2014-04-29"]
["id": 13644764, "check_in": "2014-04-22", "check_out": "2014-04-29"]
],
2591: [["id": 13644761, "check_in": "2014-04-22", "check_out": "2014-04-29"]]
]
但我想保持一個簡單的數組在模型層,而而不是數組字典,因爲它比在數組字典上更容易對其執行CRUD操作。
更一般地,就是我要問的是:我怎麼可以處理數據從型號格式到視圖控制器(必需的數據源方法numberOfSectionsInCollectionView:
,collection:numberOfItemsInSection:
和collectionView:cellForItemAtIndexPath:
)。
我在執行數據轉換的預訂數組上有一個只讀的計算屬性。但它可能會影響性能。如果計算出來的屬性不是一個選項,我怎樣才能保持這兩個數據結構同步呢?
@Rob Napier在幾天前寫了一篇關於「扁平化拼圖」的文章。看看它[這裏](http://robnapier.net/flatmap)。 – 2014-09-12 12:51:22
你會考慮使用CoreData來存儲這些信息嗎? – pbasdf 2014-09-12 13:01:07
@POB謝謝,我正在閱讀。 – jamiltz 2014-09-12 13:02:52