0

我做了一个计算耗气量的小程序。在最终视图控制器中计算消耗所需的每个数据条目都有一个视图控制器。因此,您在第一个控制器中输入行驶距离,在下一个控制器中添加燃料。在显示结果的控制器中,也添加了当前日期。所有条目都以字符串形式存储在 plist 文件中,以便稍后与 tableviews 一起使用(日期除外)。

现在我想在摘要视图控制器中打开这些数据以填充表格视图。

目前我已经从 plist 文件中检索了 3 个数组(类似于表的列):数组 1:NSDate 数组 2:表示数字的 NSString 数组 3:表示数字的 NSString

我知道如何填充我的 tableview,但我无法围绕排序。我尝试将列方法更改为基于表行的方法,从每个数组中获取每个元素并将它们添加到一个新数组中,每个数组包含一个日期和两个数字(作为字符串)。

我尝试设置排序描述符,我尝试使用选择器,但似乎我并不完全理解如何使用它。就个人而言,我更喜欢示例,因此我一直在寻找有关此主题的教程。开发者纪录片没有太大帮助。

我不希望得到这个问题的完整示例,但可能会提供一些关于如何排列我的数据以及最好使用什么来对完整数据数组进行排序的指针。

感谢您提供任何指示或示例。

编辑:我终于将所有“表格行”作为“行”放入字典中。现在我可以通过键访问单个列。这也允许使用排序描述符对我的字典数组中的字符串值进行升序或降序排序。

这可能不是最优雅的方法,但我想我现在可以做我想做的事了。请原谅“表格”比较,但我发现这更容易掌握。

如果有人有好的数组教程的指针,我将不胜感激。

4

1 回答 1

2

我不太清楚你想如何排序,但也许你可以从中调整一些东西(对字典数组进行排序,每个字典都有一个键 @“row”,值类型为 NSNumber) -

首先,做一个比较结果函数:

static NSComparisonResult compareRowNumbers(NSDictionary *dict1, NSDictionary *dict2, void * context) {

    if ([[dict1 objectForKey:@"row"] intValue] < [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedAscending;}
    if ([[dict1 objectForKey:@"row"] intValue] > [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedDescending;}

    return NSOrderedSame;

}

然后你可以像这样使用它 -

NSMutableArray *myArray = [NSMutableArray array];

// populate your array with loads of stuff (in this case, NSDictionaries as decribed above)
// now sort it

[myArray sortUsingFunction:compareRowNumbers context:NULL];

...并且您的数组会自动排序。

于 2012-04-13T17:59:21.957 回答