很抱歉問這樣一個微不足道的問題。我是新手的Objective-C,&根本無法看到如何得到這個工作,嘗試過它周圍google'd幾種可能的方式&後。請幫忙! 我的問題很簡單。我有一個類級別的NSDate對象,它宣佈任何方法之外的類爲:現在跨方法無法訪問的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方法,該值顯示當前的日期/時間(而不是一個用戶選擇)。
你確定你正在使用ARC嗎? ARC的財產使用強/弱,而不是保留關鍵字! – Andy 2013-01-25 00:38:56
@Jean你有沒有想過解決這個問題?我正在研究一個應用程序,並且遇到了完全相同的問題。 – yiwei 2014-01-12 03:40:04
@Jean沒關係,我解決了我的問題。我使用'NSCoding'來編碼我的類,並且省去了行來編碼和解碼我的'NSDate'屬性。 – yiwei 2014-01-12 04:29:23