Мне нужно настроить инструкцию if/else, которая сравнивает только месяц и день двух NSDates. Одна из дат выбрана с помощью UIDatePicker, а другая - сегодняшней. Если месяц и дата двух одинаковы, что-то происходит, если не происходит что-то еще.Сравните месяц и день двух NSDates
Вот как я его настроил, но он не работает (всегда срабатывает инструкция else). Не знаете, куда идти отсюда:
.h
@interface ViewController : UIViewController {
UIDatePicker *datePicker;
NSDate *pickedDate;
NSDateFormatter *pickedDateFormat;
NSString *pickedDateString;
NSDate *todaysDate;
NSDateFormatter *todaysDateFormat;
NSString *todaysDateString;
UILabel *label;
}
.m
- (IBAction)buttonToCompareDates:(id)sender {
// Sets date from date picker
pickedDate = [datePicker date];
pickedDateFormat = [[NSDateFormatter alloc] init];
[pickedDateFormat setDateFormat:@"MM/dd"];
pickedDateString = [pickedDateFormat stringFromDate:pickedDate];
// Sets today's date
todaysDate = [NSDate date];
todaysDateFormat = [[NSDateFormatter alloc] init];
[todaysDateFormat setDateFormat:@"MM/dd"];
todaysDateString = [todaysDateFormat stringFromDate:todaysDate];
// if/else statement
if (todaysDateString == pickedDateString) {
label.text = @"The dates match.";
} else {
label.text = @"The dates don't match.";
}
}
Я был в предположении, что это будет работать, но это не так. Мне нужно только сопоставить месячные и дневные разделы NSDates, поэтому я попытался отформатировать их до тех частей и сравнить строки. Проблема в том, что я всегда получаю предложение "The dates don't match."
, даже если даты совпадают. Не знаете, почему, могли бы использовать объяснение и правильный путь для этого.
, как я знаю, что NSString может 't сравнить с "==". Вы получите предупреждение «Прямое сравнение строкового литерала имеет неопределенное поведение». try isEqualToString метод –
@HuyNghia вы абсолютно правы, потому что невозможно перегрузить оператора в Objective C. –