このような些細な質問をして申し訳ありません。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);
...
...
}
...
...
fromDateChosenは、ユーザーが UI の Date Picker オブジェクトから日付を選択した後に呼び出されます。メソッド「fromDateChosen」内で、 historyFromDateを出力すると、値は正しいです。しかし、fetchTheHistoryメソッドで出力すると、値は現在の日付/時刻を示します (ユーザーが選択したものではありません)。