1

我已经对我的对象数组、具有属性 dateOfentry、name、age 的实体员工的想法进行了排序。

NSSortDescriptor *ageDescriptor =
    [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSArray *sortDescriptors = @[ageDescriptor];
NSArray *sortedArray = [empArrayList sortedArrayUsingDescriptors:sortDescriptors];

现在员工一天可以多次进入时差,所以我喜欢获取并显示员工访问的日期库记录。

如何进一步收集具有不同记录的同一天记录,以便我可以将其显示在表格视图中,其中部分为日期,行为时间。

4

2 回答 2

0

只需添加:

-(void)viewWillAppear:(BOOL)animated {
   [tableView reloadData];
}

也许它有效。

于 2013-03-07T09:48:52.220 回答
0

我想按日期排序可以正常工作。

如果您希望您的函数收集具有特定日期的所有对象,它可能看起来像这样(假设您的对象员工是 NSDictionary 或 NSMutableDictionary);

-(NSArray*)getObjectsWithDate: (NSDate*) date fromArray:(NSArray*) array
{
    NSMutableArray *retArray = [[NSMutableArray alloc]init];
    BOOL b_enteredCorrectDateArea = NO;
    for (NSDictionary *dict in array) {
        NSDate *dateFromDict = [dict objectForKey:@"date"];
        //Updated section
        unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
        NSCalendar* calendar = [NSCalendar currentCalendar];
        NSDateComponents* components = [calendar components:flags fromDate:dateFromDict];
        NSDate* dateFromDictWithoutTimeComponent = [calendar dateFromComponents:components];

        components = [calendar components:flags fromDate:date];
        NSDate *dateFromArgumentsWithoutTimeComponent = [calendar dateFromComponents:components];
        //end of update

        if ([dateFromArgumentsWithoutTimeComponent isEqualToDate:dateFromDictWithoutTimeComponent]) {
            [retArray addObject:dict];
            if (!b_enteredCorrectDateArea) {
                b_enteredCorrectDateArea = YES;
            }
        }
        else if(b_enteredCorrectDateArea) //performance Optimization
        {
            break;
        }
    }
    return retArray;
}

如果您想显示过滤后的数据,只需将返回的数组用作 UITableView 的数据源,并在将数组分配为数据源后重新加载表格视图。

当然,这没有经过测试,因为我没有测试数据。但它应该像这样工作。

如果这对您有用,请也为这篇文章投票,因为它向我展示了如何在没有时间的情况下使用日期。:)

于 2013-03-07T10:05:02.387 回答