Мне жаль задавать такой тривиальный вопрос. Я новичок в Objective-C, & просто не вижу, как это работает, попробовав несколько возможных способов: & google'd для него. Пожалуйста помоги! Мой вопрос прост. У меня есть NSDate объект уровня класса, который объявлен вне любого метода в классе как:Значение NSDate недоступно через методы
NSDate *fromDate;
Теперь в методе, ставит это значение даты из DatePicker как:
fromDate = [datePicker date];
Вскоре после указанного назначения я распечатаю его значение в журнале &, он отлично работает.
NSLog(@"From Date: %@", fromDate);
Теперь, когда я использую значение NSDate в другом/другом методе, значение ушло! Почему это не сохраняется в методах одного и того же класса? Что я могу сделать для того, чтобы ценность была доступна для всех методов?
Спасибо за ваш ответ.
Привет Remy,
Я не знаю, Objective-C не имеет переменный уровень класса! Спасибо, что указали!
Да, я установил проект (в Xcode) для ARC (так что я считаю, что это должно позаботиться).
Вот код:
В ViewController.h
....
....
@property (nonatomic, retain) NSDate *historyFromDate;
@property (nonatomic, retain) NSDate *historyToDate;
....
....
-(IBAction) fromDateChosen: (id)sender;
-(void) fetchTheHistory;
В ViewController.m
...
...
@synthesize historyFromDate;
@synthesize historyToDate;
....
....
-(IBAction) fromDateChosen: (id)sender {
NSString *buttonTitle = @"I've chosen the 'FROM' date";
if ([[buttonDateChosen currentTitle] isEqualToString:buttonTitle]) {
NSLog(@"User has chosen the 'From' date");
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
// Get the chosen date value
NSDate *fromDate = [datePicker date];
historyFromDate = fromDate;
// Set the 'to' date label to reflect the user's choice
labelFromDate.text = [dateFormatter stringFromDate:historyFromDate];
NSLog(@"'From' Date Chosen:%@", historyFromDate);
//[dateFormatter stringFromDate:[datePicker date]]);
[self fetchTheMoodHistory];
}
}
...
...
...
-(void) fetchTheHistory {
NSLog(@"Calling fetchTheHistory for the period from %@", historyFromDate);
...
...
}
...
...
fromDateChosen вызывается после того, как пользователь выбирает дату сформируйте объект Date Picker в пользовательском интерфейсе. В рамках метода 'fromDateChosen', когда я печатаю historyFromDate, значение является правильным. Но, когда я печатаю его в fetchTheHistory, значение показывает текущую дату/время (а не тот, который выбрал пользователь).
Вы уверены, что используете ARC? Свойство ARC использует сильное/слабое, а не ключевое слово сохранения. – Andy
@Jean Вы когда-нибудь выяснили решение этой проблемы? Я работаю над приложением, и я столкнулся с такой же проблемой. – yiwei
@Jean Ничего, я разработал свою проблему. Я использовал «NSCoding» для кодирования моего класса, и я оставил строки для кодирования и декодирования моего свойства «NSDate». – yiwei