Где я должен хранить начальные данные для моего приложения Xcode Swift? - PullRequest
0 голосов
/ 09 июня 2019

Я работаю над приложением типа флэш-карты.Данные представляют собой массив словарей, которые должны присутствовать при запуске приложения, даже в первый раз.

Однако со временем данные в приложении необходимо будет обновить - либо существующие записи будутбудут изменены или новые записи будут добавлены.У меня есть внешний скрипт Python, который генерирует файл JSON и загружает его на мой веб-сервер.Моему приложению нужен этот файл.

Каждый раз, когда приложение запускается, моя идея заключается в проверке веб-сервера.Если данные там новее, я их скачаю, сохраню и использую.Если нет (или веб-сервер недоступен), я буду использовать данные, уже находящиеся в приложении, которые могут быть исходными данными или более новыми данными, которые были загружены и сохранены ранее.

Итак, мои вопросыявляются:

Где я могу хранить исходные данные и где я буду хранить данные, которые в конечном итоге я буду загружать?Чтобы не тратить впустую пространство, я бы предпочел не включать файл JSON, который читается один раз и только один раз, затем сохраняется в UserDefaults, а затем на него больше не ссылаются.

Есть ли способ запустить приложение с предустановленнымСуществующие UserDefaults?(Кажется маловероятным.) Если я включу файл JSON в свое приложение, могу ли я просто заменить содержимое файла новым, который я скачал?Или мне нужно использовать Core Data?

Ответы [ 2 ]

1 голос
/ 09 июня 2019

Добавление в ваш проект файла json, который читается только один раз, - неплохая идея, поскольку файл json будет простым текстовым файлом, который не займет сколько-нибудь значительного пространства.

Но так как вы хотите изменить этот файл json позже, лучшим подходом было бы сначала скопировать этот файл json из вашего комплекта приложений в любые доступные папки песочницы при запуске вашего приложения (это позволит вам изменить файлпозже).

Позже вы можете проверить и изменить файл, если данные доступны с веб-сервера.И прочитайте содержимое файла позже.

1 голос
/ 09 июня 2019

Есть ли способ запустить приложение с уже существующими пользовательскими настройками?(Кажется маловероятным.)

На самом деле есть такой способ (он называется , регистрирующий значения по умолчанию), но это не имеет значения.JSON, являющийся основой вашего словаря, не является пользовательским по умолчанию и никогда не будет храниться в UserDefaults, поэтому полностью стереть это из головы.UserDefaults не имеет отношения к этой истории.

Скорее, вы включили бы начальную версию JSON в комплект приложения, как вы предлагали, и скопировали ее, скажем, в каталог Documents при запуске если , то здесь нет ни этой, ни более поздней версии.(Вы можете использовать схему именования для отслеживания версий.) Впоследствии, если вы обнаружите более новую версию в Интернете, вы просто перезаписываете или удаляете существующий файл из Документов и сохраняете более новый файл.

Всеэто предполагает, что словарь достаточно мал, чтобы вы могли загрузить все это сразу в память, поскольку именно это вы будете делать, когда читаете файл JSON.Если вы были обеспокоены тем, что вы не можете масштабировать таким образом, и что вам потребуется возможность загружать только часть ваших данных за один раз, , что будет причиной для использованияSQLite или (дрожь) Core Data вместо этого, поскольку эти подходы позволяют запрашивать базу данных на диске, не загружая все это в память сразу.Допустим, вы использовали SQLite.Затем вы включили бы исходную версию файла SQLite в комплект вашего приложения и сохранили его в Documents, иначе вы бы включили версию JSON и встроили исходный файл SQLite в Documents при первом запуске;впоследствии вы будете использовать команды SQL для изменения файла SQLite в Документах при обнаружении исправленных данных в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...