Я делаю:
NSString *path = [[self class] pathForDocumentWithName:@"Alarms.plist"];
NSArray *alarmDicts = [NSMutableArray arrayWithContentsOfFile:path];
if (alarmDicts == nil)
{
NSLog(@"MER. Unable to read plist file: %@", path);
path = [[NSBundle mainBundle] pathForResource:@"Alarms"
ofType:@"plist"];
alarmDicts = [NSMutableArray arrayWithContentsOfFile:path];
}
_displayedObjects = [[NSMutableArray alloc]
initWithCapacity:[alarmDicts count]];
for (NSDictionary *currDict in alarmDicts)
{
Alarm *alarm = [[Alarm alloc] initWithDictionary:currDict];
[_displayedObjects addObject:alarm];
}
pathForDocumentWithName просто вспомогательный метод, предположим, что он работает (работает). Я добавляю все значения plist к объекту и сохраняю его в массиве. Теперь, если я сделаю что-то вроде этого:
NSUInteger index = [indexPath row];
id alarm = [[self displayedObjects] objectAtIndex:index];
NSString *title = [alarm title];
[[cell detailTextLabel] setText:title];
Работает отлично. Но при попытке отформатировать тип NSDate в файле plist (указан как «datetime»)
NSDate *datetime = [alarm datetime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm"];
[[cell textLabel] setText:[formatter stringFromDate:datetime]];
Он выбрасывает NSLog для alarmDicts, равного nil, и возвращает nil для строки. У меня нет идей, и я несколько часов пытался решить эту проблему. У кого-нибудь есть идеи?
Кроме того, если я распечатываю описание для даты и времени, оно отлично работает. Только ноль и ошибки, когда я пытаюсь использовать NSDateFormatter на нем.