Как мне отформатировать дату из NSFetchedResultsSectionInfo? - PullRequest
2 голосов
/ 13 марта 2012

Я хочу просто иметь возможность четко форматировать даты в заголовках разделов моей таблицы.Вот мой код:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSDate *date = [dateFormatter dateFromString:sectionInfo.name];
NSString *formattedDate = [dateFormatter stringFromDate:date];
NSLog(@"%@", formattedDate);
return formattedDate;
}

С этим кодом заголовки разделов не появляются, потому что дата равна нулю.По какой-то причине dateFromString не может превратить строку sectionInfo.name в NSDate.Есть предложения?

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Принимая во внимание ваш комментарий, где вы указываете, что формат вашего заголовка даты 2012-03-12 07:00:00 +0000, вы можете быть уверены, что проблема в форматировании.

NSDateFormatterMediumStyle имеет формат «23 ноября 1937 года» - и это ваше несоответствие:)

Вы должны использовать что-то вроде:

[dateFormatter setDateStyle:@"yyyy-dd-MM HH:mm:ss ZZZ"];

, чтобы сделать NSDate из строкиформат у вас есть.Тогда должно работать.

Если вам нужно вернуть строку NSString в формате NSDateFormatterMediumStyle, то только после получения NSDate вы можете применить его к объекту dateFormatter, как это делали:

[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

, а затемиспользуйте этот dateFormatter, чтобы получить строку с полученной вами даты:

NSString *formattedDate = [dateFormatter stringFromDate:date];
0 голосов
/ 13 февраля 2013

При загрузке я настроил парсер даты и форматер даты

@property(nonatomic, strong) NSDateFormatter *dateParser;
@property(nonatomic, strong) NSDateFormatter *dateFormatter;
@property(nonatomic, strong) NSDateFormatter *timeFormatter;


- (void)viewDidLoad {
    [super viewDidLoad];

    self.dateParser = [[NSDateFormatter alloc] init];
    self.dateFormatter = [[NSDateFormatter alloc] init];

    [self.dateParser setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
    [self.dateFormatter setDateStyle:NSDateFormatterFullStyle];
    ...    
}


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    NSDate *date = [self.dateParser dateFromString:sectionInfo.name];
    return [self.dateFormatter stringFromDate:date];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...