gpt4 book ai didi

ios - 将 NSIndexPaths 映射到数据标识符

转载 作者:行者123 更新时间:2023-11-29 02:40:58 27 4
gpt4 key购买 nike

我正在使用 Collection View 来显示从服务器接收的数据。返回的 json 预订数组如下所示:

[
{
"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
}
]

我正在使用 Collection View 来显示数据并且必须实现 UICollectionViewDataSource 协议(protocol)。更具体地说,一个部分包含具有相同 property_id 的所有预订。所以我必须进行数据转换以将 json 数组映射到部分和项目。在反序列化 JSON 和数据转换后的 Swift 中,它看起来像这样(键是 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 操作比对数组字典更容易。

更一般地说,我要问的是:如何处理从模型到 View Controller 的数据格式(数据源方法numberOfSectionsInCollectionView:collection:numberOfItemsInSection:collectionView:cellForItemAtIndexPath:).

我正在考虑在执行数据转换的 bookings 数组上有一个只读计算属性。但它可能会对性能产生影响。如果计算属性不是一个选项,我该如何使这两个数据结构保持同步?

最佳答案

首先,我强烈建议您将字典数组转换为对象数组。 JSON 应该解析为模型对象,而不是解析为字典。我一直在写一个关于这种解析的系列,从 Functional Wish Fulfillment 开始,但是您可以使用任何您想要的技术来进行解析。只需将其放入对象(通常是 Swift 中的结构体)即可。然后你就会得到你的简单数组。

除此之外,Cocoa 各个圈子越来越倾向于解决“我如何显示这个”,这是从传统 MVC 架构到 MVVM 架构的过渡。在 MVVM 架构中,您可以在 ViewController 和 Model 之间添加额外的“View Model”层。 ViewModel 的工作是将数据整理成显示层希望的形式。一旦模型中有一个好的对象,这可能是必要的,也可能不是必要的。但是,如果您的模型设计不完全符合您的 View 需求,则 ViewModel 是一个很好的中介。

关于ios - 将 NSIndexPaths 映射到数据标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com