【发布时间】:2015-04-01 15:39:06
【问题描述】:
我有一个传入的 JSON 数组,其中详细说明了连续和非连续的日期期间。
示例:
(请注意,根索引值是示例清晰度。真实数据只是关联键值)
[0] => '01/01/2015 - 05/01/2015' : ['01/01/2015',
'02/01/2015',
'03/01/2015',
'04/01/2015',
'05/01/2015'],
[1] => '01/02/2015 - 05/02/2015' : ['01/02/2015',
'02/02/2015',
'03/02/2015',
'04/02/2015',
'05/02/2015'],
[2] => '25/03/2015': '25/03/2015',
[3] => '01/04/2015': '01/04/2015'
我的最终目的是在UITableView 中显示每个关联键,其中连续的日期单元格(示例中的索引[0] 和[1])在选择时将转到另一个UITableView 列出每个单独的日期连续块。非连续的日期单元格(例如索引[2] 和[3])将不能被用户选择,因为没有更多可看的了。精明吗?
我的问题是我将 JSON 数组导入到 NSArray 和 NSDictionary 中。 (读者应该知道数组是有序的,而字典不是)
NSArray 的导入数据结构为真。问题是我无法显示第一个 UITableView 中的键,第二个 UITableView 可以从中填充相关值。
我取了allKeys 和NSDictionary 的NSArray,这给了我非结构化字典的键的结构化数组。这我可以用来在第一个UITableView 中显示,但是它的数据结构表示与导入的结构不一样。每次都是混乱和不同的。
我的问题是我到底是怎么做到的?但我应该想象这个问题可能不够具体......那么,我将如何按日期顺序对字典的allKeys 数组进行排序?
如果您的想法是“这很简单!只需使用描述符进行排序”,
喜欢这个...?
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
NSArray *descriptors=[NSArray arrayWithObject: descriptor];
NSArray *reverseOrder=[self.dateKeys sortedArrayUsingDescriptors:descriptors];
遗憾的是,这太容易了。这适用于非连续日期键或单个日期,但在我有连续日期键的情况下,'01/01/2015 - 05/01/2015' 它失败了。整体NSArray更接近真实导入的数据结构,但不够接近
【问题讨论】:
-
您是否查看了文档以了解对数组进行排序的所有其他方法?还是您完全依赖这里的答案,而无需自己付出任何努力?如果是这样,您认为这可以解释为什么您会被否决吗?
-
当然(至少在我理解苹果文档的能力范围内)。我觉得有很多人觉得投票,向上或向下不需要解释或推理。我无法理解这如何使社区中的任何人受益的逻辑。除此之外,无论您是否是最初的反对者,我都感谢您的评论
标签: ios objective-c arrays uitableview nsdictionary