我做了一个计算气体消耗的小程序。 对于计算最终视图控制器中的消耗所需的每个数据条目,有一个视图控制器。 因此,您在第一个控制器中输入驱动距离,燃气在下一个控制器中加油。在显示结果的控制器中,也添加当前日期。 所有条目都作为字符串存储在plist文件中,以便以后使用tableviews(日期除外)。
现在我想在摘要视图控制器中打开此数据以填充tableview。
目前我从plist文件中检索了3个数组(类似于表的列): 数组1:NSDate 数组2:表示数字的NSString 数组3:表示数字的NSString
我知道如何填充我的tableview,但我无法绕过排序。 我尝试将列方法更改为基于表行的方法,从每个数组中获取每个元素并将它们添加到新数组中,每个数组包含一个日期和两个数字(作为字符串)。
我尝试设置sortdescriptors,我尝试使用选择器,但似乎我不完全理解如何使用它。就个人而言,我更喜欢例子,所以我一直在寻找关于这个主题的教程。开发者纪录片并没有那么大的帮助。
我不希望得到这个问题的完整示例,但可能还有一些关于如何安排数据以及最好用于对整个数据数组进行排序的指针。
感谢您提供任何指示或示例。
编辑: 我终于得到了所有" Table-lines"作为"行"进入字典。现在,我可以按列的键访问单列。这也允许使用sortdescriptor对我的字典数组中的字符串值进行升序或降序排序。
这可能不是最优雅的方法,但我想我现在可以做我想做的事。 请原谅"表"比较,但我发现这更容易掌握。
如果有人指向好的阵列教程,我会非常感激。
答案 0 :(得分:2)
我不太清楚你想要如何排序,但也许你可以从中调整一些东西(用一个键@"行"用值类型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];
...您的数组会自动排序。