datePicker を作成しました。datePicker を再度使用するときに、最後に使用した日付を表示したいと考えています。datePicker をユーザーのデフォルトに保存し、保存した日付に日付を設定しようとしました。これが私のコードです:
datepicker = [[UIDatePicker alloc] init];
datepicker.datePickerMode = UIDatePickerModeDate;
[datepicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
datepicker.timeZone = [NSTimeZone defaultTimeZone];
datepicker.minuteInterval = 5;
datepicker.datePickerMode = UIDatePickerModeTime;
[datepicker setDate:selectedDate];
[textfield setInputView:datepicker];
これは値が変更されました
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate *selectedDate = [datepicker date];
[defaults setObject:selectedDate forKey:@"selectedDate"];
しかし、私はエラーが発生します
Use of undeclared identifier 'selectedDate'
ヘッダーファイルに何かを入れる必要がありますか?
編集
これをヘッダーファイルに入れてみましたが、ボタンを押してdatePickerでView Controllerにアクセスすると、アプリがクラッシュします。キャッチされていない例外が原因でクラッシュします。
NSDate *selectedDate;
編集 2
このコードを試してみましたが、エラーが発生しました
NSUserDefaults *defaul = [NSUserDefaults standardUserDefaults];
if([[NSUserDefaults standardUserDefaults] objectForKey:@"selectedDate"] != nil) {
NSDate *selectedDate = [defaul dataForKey:@"selectedDate"];
そしてピッカーでDidChange
NSUserDefaults *defaul = [NSUserDefaults standardUserDefaults];
NSDate *selectedDates = [datepicker date];
[defaul setObject:selectedDates forKey:@"selectedDate"];
エラーはIncompatible pointer types initializing 'NSDate *__strong' with an expression of type 'NSData *'
編集 3
これはdateForKeyと言っていると思いました
NSDate *selectedDate = [defaul dataForKey:@"selectedDate"];
だから私はそれを
NSDate *selectedDate = [defaul objectForKey:@"selectedDate"];
そして今、ピッカーは私が望むように機能します。