2013-03-07 1 views
1

Я отсортировал массив объектов, идею сотрудника сущности, имеющего атрибут dateOfentry, имя, возраст.Использование NSSortDescriptor разных значений с их повторяющимися значениями

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

В настоящее время в день служащий может ввести много раз с разницей во времени, поэтому я хотел бы принести и дата записи базы visito сотрудников.

Как я могу продолжить работу по сбору записей в тот же день с разными записями, чтобы я мог отображать его в виде таблицы с разделом в качестве даты дня со строкой как время.

ответ

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 и перезагрузить TableView после присвоения массива в качестве источника данных.

Конечно, это не проверено, так как у меня нет тестовых данных. Но это должно сработать так.

Если это сработает для вас, пожалуйста, также включите этот номер post, так как он показал мне, как просто использовать дату без времени. :)

+0

его хорошо, но, пожалуйста, поймите, как будто у меня 5 или более (динамических) записей, я извлек все записи из базы данных и я waan для отображения одинаковых записей даты с разным временем в одном разделе и других датах с разными время в другом разделе то же самое, спасибо, пожалуйста, помогите мне – terminator

+0

ах. поэтому вы хотите сравнить только дату, а не время. Ок, извините, неправильно понял это. Тогда я уточню свой ответ. – Maverick1st

+0

спасибо Maverick за помощью, пожалуйста, обновите его – terminator

0

Просто добавьте:

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

Может быть, это работает.

Смежные вопросы