如何对 JSON 数组进行排序并在 UITableView 中呈现

Posted

技术标签:

【中文标题】如何对 JSON 数组进行排序并在 UITableView 中呈现【英文标题】:How to sort JSON Array and present it in UITableView 【发布时间】:2018-10-20 04:25:51 【问题描述】:

我有一个以下 JSON 数组

 
  "id": 36,
  "name": "The Shawshank Redemption",
  "year": 1994,
  "rating": 9.196
,

  "id": 45,
  "name": "The Green Mile",
  "year": 1999,
  "rating": 9.064
,

  "id": 48,
  "name": "Forrest Gump",
  "year": 1994,
  "rating": 8.921
,

  "id": 39,
  "name": "Schindler's List",
  "year": 1993,
  "rating": 8.817
,

  "id": 53,
  "name": "Intouchables",
  "year": 2011,
  "rating": 8.812
,

那么,如何让 UITableView 中的同年电影在一个版块中显示(例如:《肖申克的救赎》和《阿甘正传》将显示在“1994”版块中,“绿色英里”将显示在“1994”版块中显示在“1999”等部分)

此外,包含电影的部分必须按年份排序(首先是“2011”部分,然后是“1999”部分等),并且每个部分中的电影必须按等级排序(例如,在“1994”部分“肖申克的救赎”中" 必须在第 0 行,"阿甘正传" 在第 1 行)

我对此的解决方案是制作二维阵列并将具有相同年份的电影放入其中,但我确信必须有更好的解决方案。

【问题讨论】:

您可以使用 Dictionary(grouping:by: 按年份对数组进行分组,并使用排序键将字典映射到包含该部分名称/年份的自定义结构和按等级排序的 Film 数组跨度> 你所做的是一个 BuckeSort,如果你的电影比几年多,这是一个非常有效的方法,可以提前限制你需要的数量或年份。这对您的应用程序来说似乎是可能的,如果您的电影比几年多,这似乎就足够了。但是,由于您通常希望将电影放入数组之外的其他数据结构中,因此可能会有更合适的解决方案,具体取决于细节。 【参考方案1】:

首先:创建自定义元素

第二次:读取Json并创建一个数组作为自定义数组并追加到这个数组

第三个:为部分创建元组

Forth:UITableView 的代码

【讨论】:

不要做第三。 Apple 说:元组对于相关值的临时组很有用。它们不适合创建复杂的数据结构。如果您的数据结构可能在临时范围之外持续存在,请将其建模为类或结构,而不是元组。 我通常使用结构,但是当我想按日期对自定义数组进行排序时,我使用元组

以上是关于如何对 JSON 数组进行排序并在 UITableView 中呈现的主要内容,如果未能解决你的问题,请参考以下文章

数据未排序时如何对数组中的json数据进行排序?

如何在swift 4中对数组中的JSON数据进行排序

按属性对 JSON 数组进行排序的通用方法

如何对 JSON 项目进行排序/分组

将图像数组转换为 JSON 文件并在 C# 之后对其进行解码

如何按数值对 json 进行排序?