Использование даты объекта (без времени) для заголовка таблицы вместо даты и времени объекта? - PullRequest
0 голосов
/ 15 мая 2010

Я работал над проектом для iPhone и столкнулся с проблемой. В настоящее время в табличном представлении, где отображаются все объекты, я использую заголовки на основе поля datePerformed объектов. Единственная проблема заключается в том, что мой код, очевидно, создает заголовок, который содержит как дату, так и время, в результате чего объекты группируются не только по их дате, как я планировал, но скорее по их дате и времени. Я не уверен, имеет ли это значение, но когда объект создается, я использую средство выбора даты, чтобы выбрать дату, но не время. Мне было интересно, если кто-нибудь может дать мне какие-либо предложения или советы.

Вот код, в котором я установил fetchedResultsController

- (NSFetchedResultsController *)fetchedResultsController {

if (fetchedResultsController != nil) {
    return fetchedResultsController;
}

// Create and configure a fetch request with the Exercise entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Exercise" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

// Create the sort descriptors array using date and name
NSSortDescriptor *dateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"datePerformed" ascending:NO];
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:dateDescriptor, nameDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

// Create and initialize the fetch results controller
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"datePerformed" cacheName:@"Root"];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;

// Memory management calls
[aFetchedResultsController release];
[fetchRequest release];
[dateDescriptor release];
[nameDescriptor release];
[sortDescriptors release];

return fetchedResultsController;
}

Вот где я настраиваю свойства заголовка таблицы:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
// Display the exercise' date as section headings.
return [[[fetchedResultsController sections] objectAtIndex:section] name];
}

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 15 мая 2010

Когда вы конвертируете NSDate в строку для таблицы, просто конвертируйте дату, а не время. Одно из моих приложений делает именно эту вещь для заголовков таблицы, я настраиваю форматер даты следующим образом (без стиля времени):

self.dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

NSString* str = [dateFormatter stringFromDate:[NSDate date]];               

Возможно, вам понадобится добавить эту строку, если вы используете форматтер, для которого уже установлен стиль времени:

[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...