Поскольку мы используем очень строгую форму кодирования, закладки будут сбрасываться каждый раз, когда мы изменяем структуру.
Приложение A: https://github.com/rnystrom/GitHawk/blob/10e7b67f581ee05403fe44e4e9a444bafda0f05f/Classes/Bookmark/BookmarkModel.swift#L28 снова сломало его (извините!)
Есть ли способ изменить это, чтобы сделать его немного более гибким, иначе, как только он выйдет в эфир, у нас возникнут проблемы, из-за которых мы не сможем изменить его функциональность, не разрушив кеш!
Я думаю, помня, что я мало что сделал с codable, поэтому это может быть невозможно, но если мы напишем наш собственный init из codable, тогда новые значения можно будет рассматривать как необязательное и значение по умолчанию? (Это также вызовет проблемы, потому что, например, как указано выше - default branch = error = code view будет неправильным, поэтому 😕)
Не уверен, что у @rizwankce есть идеи?
Не только потому, что мы добавили новый параметр. Сброс произошел из-за того, что я изменил магазин на NSMutableOrderedSet
.
Это дает те же проблемы с обработкой БД / миграций. 🤦♂️
Отправлено с помощью GitHawk
Подождите, может ли codable не обрабатывать изменения структуры? Итак, если мы добавим новое свойство, оно не десериализуется?
Если это так, мы можем вернуться к NSCoding
.
Отправлено с помощью GitHawk
Точно, если вы обновитесь, вы просто получите кучу ошибок в консоли, говоря, что она не знает, что это за объект, и выйдет из строя (таким образом, сбросив)
Если NSCoding
справится с этим лучше, то да, возможно, это стоит того 😞
Да, с NSCoding у вас есть полный контроль, и вы просто делаете новые значения необязательными или предоставляете значение по умолчанию в initWithCoding.
Мы должны изменить это до 1.12.
Отправлено с помощью GitHawk
Таким образом, это можно сделать с помощью Codable, как я предлагал выше, но проблема в том, что нет значения по умолчанию, которое вы можете использовать, и не иметь ошибок. Я имею в виду, да, конечно, вы можете возразить "крайний случай", но на самом деле нам нужна система миграции, которая может запрашивать и обновлять закладки новой информацией 🤔
@Sherlouk приходит на ум что-то вроде
Отправлено с помощью GitHawk
В этом смысле у нас уже есть ошибки. Что происходит, когда репо меняет свою ветку по умолчанию?
Это больше похоже на то, что нам нужна система для обновления предметов, когда вы их посещаете.
Отправлено с помощью GitHawk
В смысле закладок очень верно. Issues / Search / и т. Д. - это все актуальные ссылки на репозиторий, поэтому их информация будет верной.
Закладки и недавние поиски нуждаются в способе загрузки репозитория только от имени владельца / имени, чтобы получить другую информацию перед вводом
Черт возьми, если бы мы это сделали, мы могли бы начать показывать количество звезд на репозиториях и ярлыках по проблемам. Можно было бы сделать это простым и обновлять только при входе в вещь (по сравнению с какой-то службой синхронизации).
Боковое примечание, вы не можете запрашивать несколько репозиториев в одном запросе gql, верно? Так как один запрос на 4 репо по имени?
Отправлено с помощью GitHawk
Насколько я знаю, думаю, это 1: 1. Звездочки, ярлыки, информация о фиксации 🤔🤔
Отправлено с помощью GitHawk
Мысли о том, что тут делать? Хотел бы представить 1.12 на этой неделе. Я не особо переживаю по поводу этого банкомата, просто нужно подумать о плане миграции.
Похоже, что в долгосрочной перспективе нам просто нужен механизм обновления, но его нетрудно добавить.
Может быть, нам просто нужно немного реорганизовать закладки, чтобы мы могли выполнять поиск O (1) на основе идентификатора и обновлять объекты?
Я лично очень обеспокоен выпуском закладок без плана для этого, как будто мы не справимся с этим, борьба продолжится очищать закладки пользователей!
Отправлено с помощью GitHawk
Мы бы никогда не выпустили версию, стирающую закладки, я с этим не согласен. Любые изменения, которые могут уничтожить закладки, должны включать миграции, даже если они выполняются вручную.
Отправлено с помощью GitHawk
Заканчивая это, я думаю, что сейчас мы все под контролем. Обязательно нужно проверять это для каждой новой версии - или найти способ автоматизировать это.
Самый полезный комментарий
Мы бы никогда не выпустили версию, стирающую закладки, я с этим не согласен. Любые изменения, которые могут уничтожить закладки, должны включать миграции, даже если они выполняются вручную.
Отправлено с помощью GitHawk