NSDate был выпущен автоматически в результате ошибки Bad EXE. iPhone - PullRequest
0 голосов
/ 28 июня 2011

Я провел весь день, работая над этим, переписывая это много раз, пытаясь обдумать это.

У меня есть набор дат, объявленных в заголовке

@property (nonatomic, retain)NSDate *time;

При просмотре загрузил, я прочитал строку из базы данных, преобразовал ее в дату и установил ее в эту переменную.

NSDateFormatter *dateFormatter =[[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"dd / MMMM / yyyy"];
time=[dateFormatter dateFromString:datetime]; 

если я NSLog time, я получаю ожидаемую дату (хотя и не в правильном формате). если я затем продолжу использовать NSDate далее в представлении, я получаю ошибку Bad Exe или ошибку из-за того, что время = от нуля.

Я не понимаю, это почти как если бы его не удерживали.

Решая проблему, я создал новую дату в IBAction и попытался повторить код выше, но там, где это было необходимо, и я получил ту же проблему. Я предполагаю, что это проблема с форматированием даты, но я форматирую ее так же, как изначально она была записана в виде строки.

Что я делаю не так? я не могу позволить себе потерять еще один день на этом.

Cheer

Dan

Ответы [ 5 ]

2 голосов
/ 28 июня 2011

Вам необходимо присвоить свойству значение self.time = [dateFormatter dateFromString:datetime]; или [self setTime: [dateFormatter dateFromString:dateTime]]

Если вы просто назначите его с помощью =, не используя self, оно не сохранит его, оно просто передаст указатель.использование оператора точки заставит его сохранить его.

1 голос
/ 28 июня 2011

попробуйте использовать self.time, это будет проходить через сгенерированный метод установки, который сохранит дату, в тот момент, когда вы просто назначаете ее переменной экземпляра.

1 голос
/ 28 июня 2011

Вам необходимо присвоить это свойству, используя

self.time = [dateFormatter dateFromString:datetime];

В противном случае оно не будет сохранено

1 голос
/ 28 июня 2011

Проблема в том, что вы не устанавливаете свойство.time не использует точечную запись там.Вы должны либо написать это как (при условии, что свойство существует для себя), это может быть одним из двух способов:

self.time = [dateFormatter dateFromString:datetime];

или

[self setTime: [dateFormatter dateFromString:datetime]];
0 голосов
/ 28 июня 2011

Вам необходимо использовать: self.time = [dateFormatter dateFromString:datetime];

...