排序数组包含数组ios
我做了一个计算气体消耗的小程序。 每个数据条目都有一个视图控制器,用于计算最终视图控制器中的消耗量。 因此,您在第一个控制器中输入驱动距离,在下一个控制器中加入气体。在显示结果的控制器中,也会添加当前日期。 所有条目都以字符串的形式存储在plist文件中,以便稍后使用tableviews(日期除外)。排序数组包含数组ios
现在我想在摘要视图控制器中打开这个数据来填充tableview。
目前我有检索来自plist文件3门阵列(类似于表的列): 阵列1:的NSDate 阵列2:的NSString表示多个 阵列3:的NSString表示多个
我知道如何填充我的tableview,但我无法将头围绕排序。 我试着将列方法改为基于表格行的方法,从每个数组中获取每一个元素,并将它们添加到一个新数组中,每个元素包含一个日期和两个数字(如字符串)。
我试着设置sortdescriptors,我尝试使用选择器,但它似乎我不完全理解如何工作它。就个人而言,我更喜欢示例,所以我一直在寻找关于这个主题的教程。开发者纪录片没有那么多帮助。
我不希望为这个问题得到一个完整的例子,但也许有一些关于如何安排我的数据和什么最好用来排序整个数据数组的指针。
感谢任何指针或例子。
编辑: 我终于把所有的“表格行”都当成了“行”。现在我可以通过列的键来访问单列。这还允许使用sortdescriptor对字典数组中的字符串进行升序或降序排序。
这可能不是最优雅的方法,但我想我现在可以做我想做的。 打扰“表”比较,但我觉得这更容易掌握。
如果任何人有指向良好的数组教程,我会更感激。
我不是你想如何排序是很清楚,但也许你能适应这个东西(每个排序字典的数组与值类型的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];
...和你的阵列是自动排序。
我想我可以用你的答案来实际排序我的数组日期。但我发现了困难的方式如何做到这一点,并最终找到了我在此之前发现的:http://stackoverflow.com/questions/7507457/sort-array-of-dictionaries-by-nsdate因此,也许通过阅读进入链接,我越来越清楚自己需要什么。请原谅我之前可能不好的解释,但去年十月我开始从头开始编写程序,而且我还在学习。下次我需要比较单个元素时,我会尝试您的答案。但是谢谢。 – Mike73 2012-04-17 15:44:27