Проблема в том, что вы храните объекты Date, но пытаетесь отфильтровать это свойство как строку.
Эта строка
let dateFromString = dateFormatter.date(from: dateString)
создает объект Date () из строки, и это то, что хранится в вашем свойстве Realm.
Объект даты Realm выглядит следующим образом
2019-01-18T05:00:00.000Z
Вот ваш фильтр:
let stringDate = dateFormatter.string(from: date)
todayEvent = realm.objects(Events.self).filter("date = '\(stringDate)'")
Это создает строку из объекта даты, и Realm не будет знать, что делать с этим. Если вы хотите отфильтровать свойство даты, используйте для этого объект даты.
Важно отметить, что эта строка должна завершиться сбоем со следующей ошибкой
Expected object of type date for property 'date' on object of type 'Event', but received: 18 Jan 2019
Решение состоит в том, что если свойство, по которому выполняется поиск, является Date, тогда фильтр должен быть объектом Date.
Итак, пример написания объекта даты, который начинается как строка мм / дд / гггг
let aDateString = "01/20/2019"
let mmddyyyyFormatter = DateFormatter()
mmddyyyyFormatter.dateFormat = "MM/dd/yyyy"
if let dateObjectToStore = mmddyyyyFormatter.date(from: aDateString) {
newDataEntry.date = dateObjectToStore
} else {
print("could not create date object")
}
Предположим, что теперь мы хотим найти этот объект со строкой «ггггммдд»
[115 ]как вы можете видеть, мы сохранили дату как объект даты, а затем при фильтрации отфильтровали по объекту даты.
Существуют некоторые предостережения в отношении фильтрации и некоторые исключения, но вы получите общее представление.
Определенный для задачи UI без дополнительных средств управления. Веб-приложение, в дополнение ко всем средствам управления веб-приложения, также имеет назад, затем, закладки, и т.д. кнопки. Вы заканчиваете с дополнительным набором дюймов высотой кнопок, которые непосредственно не поддерживают задачу под рукой.
Достойная справка. Кажется, всегда запоздалая мысль, если она даже реализовала...
Надежность обычно (несколько спорный как существуют за и против - например, Ваши данные, вероятно, лучше сохранена онлайн, однако безопасность обычно находится меньше в Вашем управлении с приложением онлайн, и если сетевая связь прерывается, приложение онлайн имеет тенденцию заморозиться или перестать работать ужасно.)
ComboBox является самым известным пропуском виджета.
В сети отсутствие настольных функций, таких как раскрывающиеся диалоги является на самом деле благом, делающим для более простого опыта взаимодействия. Думайте также об элементе уклона автосохранения Gmail по сравнению с настольной конвенцией запроса пользователя сохранить.
Поэтому рассмотрите тщательно прежде, чем попытаться восстановить ту настольную функцию в Вашем веб-приложении.
Перетаскивание от Средства поиска/Проводника в веб-приложение. И наоборот.
Преимущества удобства использования стандартных элементов GUI, которые смотрят и ведут себя однородно через приложения.
(Хотя это, конечно, изменится, поскольку разработчики веб-приложения принимают определенные элементы GUI и шаблоны, которые считают лучшей практикой, особенно путем возможного пользования теми же библиотеками, например, для перетаскивания.)
Типичная функция "классических" настольных приложений является способностью работать без интернет-соединения. Я пропускаю это в веб-приложениях.
Например, слово MS работает без интернет-соединения, но Вы должны быть соединены, если Вы хотите использовать документы Google.
Конечно, не имеет значения, если приложение требует интернет-соединения так или иначе. Например, если это - программа чтения новостных лент, я должен соединиться с Интернетом, использую ли я настольного читателя или читателя онлайн.
Усовершенствованная графика: я записал программу C, которая тянет поверхность присоединяющиеся патчи Bézier в простом окне, и я должен был настроить его невообразимыми способами заставить его потянуть в достойное время. Я не могу предположить что, будучи портированным к сети.
Я имею в виду, делание усовершенствованной графики не то, в чем каждое приложение нужно, а если отображение нетривиальных изображений является медленным, затем мы не должны даже говорить об анимациях.
Вы не можете отключить, когда приложение зависает. (Да, я серьезен),
Одна поддержка строки меню Proper Macintosh.
Если Вы - долгосрочный пользователь Mac, даже с двумя большими мониторами, у Вас есть мышцы, которые нападают к вершине экрана для действий, удобных в знании, что бесконечное воздействие глубины умрет, и можно скользить вдоль того края, выбирающего из меню.
Нет в приложении браузера может обеспечить тот опыт.
Две Командных клавиши, который является побочным эффектом строки меню, не принадлежащей приложению, но идет немного кроме того - хорошие настольные приложения, имеют ярлыки командной клавиши (акселераторы Вам парни Windows, я только говорю Мнемоника, которые работают с поддержкой клавиши Alt). Большие настольные приложения показывают мало напоминаний рядом с кнопками, которые имеют акселераторы, когда Вы удерживаете соответствующие модифицирующие клавиши и ожидаете часть секунды.
Три таблицы Smarter. Существует много приложений, где некоторое представление электронной таблицы работает парадигмой, включая редактирование, сортировку, изменяя размер столбцов. Я думаю, что видел некоторые нечетные примеры частичной поддержки, но хорошая таблица в веб-приложении является все еще определенным танцующим переносом.
Четыре Используемых для щелкания правой кнопкой, но я нахожу все больше приложений, которые делают это правильно, как превосходный механизм веб-почты Kerio. Это все еще отсутствует в достаточном количестве веб-приложений, чтобы стоить подчеркнуть.
Поскольку справедливость состоит в том, чтобы упомянуть, что настольные приложения пропускают типичную функцию веб-приложений: XSS (перекрестные Сценарии Сайта).;-)
Поддержка клавиатуры на большинстве веб-приложений слаба к несуществующему. Это - улучшение, чем оно раньше было всего лишь, Вы все еще найдете много основных сайтов, которые не могут даже получить порядок вкладки работать правильно. Большинство сайтов не обрабатывает фокус правильно и вынуждает пользователей использовать мышь для активации даже самой простой из форм ввода данных. Можно обычно забывать о поддержке сочетания клавиш.
Вещью, которой Вы никогда не будете мочь подражать в веб-приложении, является низкая задержка и мгновенная обратная связь правильно написанного настольного приложения.
Даже с ajax методами для загрузки только частей страниц обычно существует значимая задержка ответа (или возможно это - просто я и моя узкополосная связь). Вы (в течение еще по крайней мере нескольких лет) просто связаны с порядками величины различия в скорости между доступом к сети и никаким доступом к сети.
Щелкните правой кнопкой по специализированным всплывающим меню, вещь, которую я заметил больше всего.
Обычно щелчок правой кнопкой по приложению браузера поднимет всплывающее меню браузера, а не специализированное меню.
При отображении запроса приложения / обрабатывают состояние или сообщения на Панели задач или Строке состояния.
Для сети JavaScript может использоваться для обновления текста в строке состояния, но не общее использование.
Это не обязательно функция программирования, но аудитория приложения будет другой. Для веб-приложения вы вырезаете полный сегмент своей аудитории (тех, у кого медленный доступ к Интернету или нет). Хотя это относительно небольшое число, это разница между настольным приложением и веб-приложением.