Я плохо знаком с разработкой iPhone. Я преобразовываю дату в нужный формат и устанавливаю его на делегата и получаю его значение в другом представлении. Сессия перезапускает, когда я пытался получить значение от делегата. Если я назначил исходную дату а не отформатированную дату в делегате набора, то я способный получить значение в другом представлении. Если я также даю какое-либо статическое строковое значение, то также я могу к статическому строковому значению назад. Только отформатированная дата, которая является строкой, установлена затем перезапуски сессии. Если я печатаю и проверяю значение отформатированной даты, это печатает корректную отформатированную дату только. Выручите меня. Вот мой код для преобразования даты
NSString *dateval=[[stories objectAtIndex: storyIndex] objectForKey:@"date"];
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"EEE, MMM dd, yyyy"];
NSDate *inputDate = [inputFormatter dateFromString:dateval];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"MMMM dd"];
NSString *outputDate = [outputFormatter stringFromDate:inputDate];
AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
[delegate setCurrentDates:outputDate];
Править: Это отображено в консоли
в представлении действительно загружался
[Сессия, запущенная в 21.04.2010 19:12:53 +0530.] GNU gdb 6.3.50-20050815 (версия gdb-967 Apple) (вторник 14 июля 2:11:58 UTC 2009) Copyright 2004 Free Software Foundation, Inc. GDB является бесплатным программным обеспечением, охваченным Генеральной общедоступной лицензией GNU, и добро пожаловать изменить его и/или распределить копии его при определенных условиях. Введите "выставочное копирование" для наблюдения условий. Нет абсолютно никакой гарантии для GDB. Введите "выставочную гарантию" для деталей. Этот GDB был настроен как "i386-apple-darwin".sharedlibrary apply-load-rules все Присоединение для обработки 4216. (gdb)
В другом представлении
- (void)viewDidLoad {
NSLog(@"inside view did load");
AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
NSString *titleValue=[delegate getCurrentDates];
self.navigationItem.title =titleValue ;
}
Получение не работает правильно. Это хорошо работает, если я даю какую-либо статическую строку или "dateval".
Спасибо.
outputDate
, похоже, не сохраняется, поэтому значение теряется в конце цикла событий (из-за NSAutoreleasePool).
Вы должны сохранить outputDate
, чтобы избежать его выпуска с чем-то вроде этого в делегате:
- (void)setCurrentDates:(NSString *)value {
[value retain]; // <- Retain new value
[date release]; // <- Release old value;
date = value;
}
Лучшим решением было бы иметь объявленное свойство в делегате с сохранить
атрибут.