【发布时间】: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,如果你的电影比几年多,这是一个非常有效的方法,可以提前限制你需要的数量或年份。这对您的应用程序来说似乎是可能的,如果您的电影比几年多,这似乎就足够了。但是,由于您通常希望将电影放入数组之外的其他数据结构中,因此可能会有更合适的解决方案,具体取决于细节。