Я разместил этот вопрос на форумах Apple Dev https://devforums.apple.com/message/956514. Я надеюсь, что это нормально, чтобы опубликовать это здесь также. На форумах разработчиков Apple пока нет ответа.
Всякий раз, когда я ввожу дату меньше 1900 года, NSDataDetector сопоставляет неправильную дату.
Например:
1 января 1201 совпадение с 1 января 2015 года и 1 февраля 1201 совпадение с 1 февраля 2014 года
Кажется, что любая дата в январе, предшествующая 1900 году, возвращается к этой дате в январе, но к 2015 году. И любая дата после января, но с любым годом до 1900 года соответствует этой дате в 2014 году.
Вот мой код для определения даты:
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeDate error:&error];
NSArray *matches = [detector matchesInString:myDateString options:0 range:NSMakeRange(0, [myDateString length])];
for (NSTextCheckingResult *match in matches) {
if (match.resultType == NSTextCheckingTypeDate) {
determinedDate = match.date;
}
}
myDateString — это просто строка, содержащая значение даты, которое необходимо проанализировать.
Я делаю что-то не так или это известная проблема с NSDataDetector?