所以在我的应用程序中,我有一个UITableView
,在导航控制器中有一个按钮来添加一个新项目。这将带您进入添加项目屏幕,完成后,我使用自定义委托将详细信息viewController中的信息传递给主tableViewController
。现在我有来自委托的信息,我将3条信息放入我的主数组中的NSArray中。现在我的问题是,我如何按日期对细节项目进行排序。我已经尝试了3次(不成功),我似乎无法弄明白。数组和字典变得混乱,因为它们是嵌套的。非常感谢任何帮助。
tableViewController类中的Delegate方法:
-(void)finishedAddingFoodItemFromDetail:(NSDate *)date whatWasEaten:(NSString *)whatFood whichMeal:(NSString *)meal{
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSString *dateString = [[NSMutableString alloc] init];
dateString = [dateFormatter stringFromDate:date];
if (!self.theArray) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"theArray"]) {
self.theArray = [defaults objectForKey:@"theArray"];
}
else{
self.theArray = [[NSMutableArray alloc] init];
}
}
[self.theArray addObject:[NSArray arrayWithObjects:dateString, meal, whatFood, nil]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.theArray forKey:@"theArray"];
[self.tableView reloadData];
[self dismissModalViewControllerAnimated:YES];
}
这是我想到的文件,但我似乎无法实现它。
/* file higharchy
* - theBigDict //large dictionary holding everything
* - MutableArray by day stored as objects of theBigDict
* - Array of the meals info:
* - Meal type
* - Food
*/
答案 0 :(得分:0)
NSMutableArray
上有几种方法可以调用它们的内容:
– sortUsingDescriptors: – sortUsingComparator: – sortWithOptions:usingComparator: – sortUsingFunction:context: – sortUsingSelector:
由于你有一个复杂对象数组,你需要编写自己的函数或比较器并调用相应的sortUsingXxx:方法。在将数组存储回NSUserDefaults并在调用表上的reloadData:
之前执行此操作。
这有帮助吗?
编辑:您的自定义函数或比较器必须从被比较的两个数组元素中提取日期(传递到您的函数中)并返回相应的比较结果,例如: NSOrderedAscending等。