很抱歉问了这么一个微不足道的问题。我是 Objective-C 的新手,在尝试了几种可能的方法并在谷歌搜索之后,根本看不到如何让它工作。请帮忙!我的问题很简单。我有一个类级别的 NSDate 对象,它在类中的任何方法之外声明为:
NSDate *fromDate;
现在,在一个方法中,将此值设置为 DatePicker 中的日期:
fromDate = [datePicker date];
完成上述任务后不久,我将它的值打印到日志中并且它工作正常。
NSLog(@"From Date: %@", fromDate);
现在,当我在另一种/不同的方法中使用 NSDate 的值时,该值消失了!为什么它不在同一个类本身的方法之间持久化?我该怎么做才能跨方法访问该值?
感谢您的回复。
嗨,雷米,
我不知道 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);
...
...
}
...
...
在用户从 UI 中的 Date Picker 对象中选择日期后,将调用fromDateChosen 。在方法“ fromDateChosen ”中,当我打印historyFromDate时,该值是正确的。但是,当我在fetchTheHistory方法中打印它时,该值显示当前日期/时间(不是用户选择的日期/时间)。