1

我有一个名为 records 的 NSMutableArray,其中包含一些单条记录。所以结构是这样的:

  • 记录
    • 记录(“名称”:“test1”,“时间戳”:“2013-09-15 12:34:35 +0000”)
    • 记录(“名称”:“test2”,“时间戳”:“2013-09-14 11:21:42 +0000”)
    • 记录(“名称”:“test3”,“时间戳”:“2013-09-14 10:47:42 +0000”)
    • 记录(“名称”:“test4”,“时间戳”:“2013-09-12 17:11:42 +0000”)
    • 记录(“名称”:“test5”,“时间戳”:“2013-09-12 19:52:42 +0000”)

知道我想在 UITableView 中显示它们。没有部分也可以正常工作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    [...]

    NSManagedObject *record = [self.records objectAtIndex:indexPath.row];

    cell.recordNameLabel.text = [record valueForKey:@"name"];
    return cell;
}

但是现在我想通过时间戳值将记录分开。所以我的想法是创建一个名为 sorted Records 的新 NSMutableArray,其结构如下:

  • 记录

    • 日 (2013-09-15)

      • 记录(“名称”:“test1”,“时间戳”:“2013-09-15 12:34:35 +0000”)
    • 日 (2013-09-14)

      • 记录(“名称”:“test2”,“时间戳”:“2013-09-14 11:21:42 +0000”)
      • 记录(“名称”:“test3”,“时间戳”:“2013-09-14 10:47:42 +0000”)
    • 日 (2013-09-12)

      • 记录(“名称”:“test4”,“时间戳”:“2013-09-12 17:11:42 +0000”)
      • 记录(“名称”:“test5”,“时间戳”:“2013-09-12 19:52:42 +0000”)

如何将记录分组/分离到我的排序结构?

谢谢你的帮助。

4

2 回答 2

2

一种可能的解决方案是:

1)创建NSDate类别将有一种方法,例如day:

@interface NSDate(Day)
- (NSDate*) day;
@end
@implementation NSDate(Day)
- (NSDate*) day
{
    unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
    NSDateComponents *comps = [[NSCalendar currentCalendar] components:unitFlags fromDate:self];
    return [[NSCalendar currentCalendar] dateFromComponents:comps];
}
@end

2) 将NSFetchedResultsController与 sectionNameKeyPath - 一起使用@"timestamp.day"

于 2013-09-15T16:50:13.150 回答
0

如果“Records”是字典对象的 NSMutableArray,其字段“timestamp”为 NSDate 类型,则可以使用 NSSortDescriptor

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:FALSE];
[allVideos sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

*它是一个降序排列的数组。ascending:TRUE表示数组的升序!!!

于 2016-08-28T06:36:12.487 回答