다음 코드를 실행하는 UIToolbarButton에 IBAction 메서드를 연결했습니다.UIDatePicker 및 날짜가 올바르게 저장되지 않습니다.
UIDatePicker는 사용자에게 시간을 표시하기 위해서만 설정됩니다. 따라서 피커가 임의로 날짜를 선택합니다. 날짜가 오늘이거나 날짜가 내일 인 경우도 있습니다. 선택자가 항상 선택한 시간을 선택하기를 원합니다 (그러나 항상 미래에). 예 : 사용자가 1 월 1 일 오후 10시에 오전 6시를 선택하면 1 월 2 일 오전 6시를 저장할 날짜가 필요합니다.
그렇다면 다음과 같이하면 NSLog가 하나의 응답을 반환하고 50 %는 다른 응답을 반환하는 시간의 50 %입니다.
if (self.picker.date >= [NSDate dateWithTimeIntervalSinceNow:0]) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate *pickerdate = self.picker.date;
[defaults setObject:pickerdate forKey:@"pickerdate"];
[defaults synchronize];
NSLog(@"The date is more than now. Pickerdate is %@",pickerdate);
}
else {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents* components = [[NSDateComponents alloc] init];
components.day = 1;
NSDate * pickerdate = [calendar dateByAddingComponents: components toDate: self.picker.date options: 0];
[defaults setObject:pickerdate forKey:@"pickerdate"];
[defaults synchronize];
NSLog(@"The date is less than now. Pickerdate is %@",pickerdate);
}
EDIT : 코드가 수정되었습니다. 논리가 거꾸로되었지만 문제가 남아 있습니다.
'> ='(또는 비슷한) 연산자를 사용하여 두 개의 'NSDate'객체를 비교할 수 없습니다. 이들은 객체입니다. 'compare :'메소드를 사용하여 두 날짜를 비교해야합니다. 하나의 객체 포인터가 다른 객체 포인터보다 크거나 동일한 지 비교하려고합니다. 확실히 당신이 원하는 것이 아닙니다. – rmaddy
아, 말이 되네. NSDate 객체 비교를 잊어 버렸습니다. 다른 사람보다 더 큰 사람이 있다면 어떻게 찾을 수 있습니까? – Macness
isLaterThanOrEqualTo 및 isEarlierThanOrEqualTo에 대한 Saw 클래스 참조입니다. – Macness