У вас... может быть проблема. Любую дату можно преобразовать в целочисленное значение, и NSDateFormatter
отлично справляется с анализом дат, если вы знаете, какой формат использовать. Похоже, у вас есть несколько очень разных форматов, поэтому вам не удастся обойтись простым преобразованием или поиском, чтобы получить целочисленные значения для ваших строк даты.
Было бы довольно легко найти только четырехзначный год, но ваш пример «1634-37» как бы сносит эту идею. Если вы искали 1636, он должен совпасть, но без дополнительной помощи. Если вы можете принять определенную погрешность, вам может быть все равно — просто позвоните по номеру 1634 и покончим с этим. Если нет, во-первых, вам понадобится диапазон дат (минимум 1634, максимум 1637), а не одна дата, а во-вторых, вам понадобится какой-то способ понять, что «-37» следует применять к «16». . Удачи с этим, потому что это быстро становится сложной проблемой.
Если есть только несколько возможных форматов даты, вы можете придумать синтаксический анализатор для каждого из них, а затем либо использовать сопоставление регулярных выражений, либо методом проб и ошибок выбрать синтаксический анализатор для строки. Однако, если форматов много, вы облажались. Вам будет лучше отредактировать данные вручную, введя дату в предпочтительном формате, который может понять ваше приложение. В конечном счете это действительно зависит от того, как именно вам нужно использовать данные и от того, сколько ошибок вы можете допустить в результатах.
Отдельно стоит отметить, что если бы это был я, я бы хотел преобразовать их в числовые значения при получении данных с веб-сервера. Тогда при выполнении выборки я смогу использовать числовое сопоставление в предикате для быстрых результатов. Сопоставление строк, особенно если вам нужно использовать регулярное выражение, выполняется очень медленно по сравнению с числовыми сравнениями.
person
Tom Harrington
schedule
01.07.2013