Лучшая практика для хранения локальных данных в проекте ios framework

Я работаю над пользовательской структурой, которая будет использоваться разработчиками. Я сохраняю некоторые данные локально внутри своей структуры, поэтому я думаю использовать UserDefaults, но я хочу знать:

  1. Это лучший способ сделать это?
  2. Если приложение UserDefaults очищено, очистит ли оно также данные моих фреймворков?

Я хочу знать, как я могу хранить локальные данные в ios framework. Какое лучшее решение для этого? Я в замешательстве, может кто-нибудь помочь?


person Abhishek    schedule 01.02.2020    source источник
comment
Вы просто код, который использует хост-приложение. У вас нет «отдельного» хранилища или песочницы.   -  person matt    schedule 01.02.2020


Ответы (2)


Это зависит от данных, которые вы хотите сохранить.

Если ваша цель состоит в том, чтобы сохранить некоторые настройки для вашего фреймворка (например, должны ли быть включены некоторые функции или нет), тогда подойдет UserDefaults. Если вы хотите хранить пользовательские данные (или что-либо, что вы можете получить с сервера), вам, вероятно, следует рассмотреть возможность использования CoreData, который является собственным постоянным хранилищем iOS/macOS/tvOS.

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

Касательно ваших вопросов:

  1. Это зависит, см. выше
  2. Да
person Yury Bogdanov    schedule 01.02.2020
comment
Спасибо @yury за отзыв. Может ли downvoter объяснить причину понижения? - person Abhishek; 01.02.2020
comment
Я хочу сохранить некоторые настройки фреймворка в зависимости от типа пользователя. Но будет ли удален UserDefault, когда пользователь приложения удалит все UserDefault, например, как большинство разработчиков очищают это при выходе из системы? - person Abhishek; 01.02.2020
comment
@Abhinshek Ну, я думаю, что очистка таких настроек при выходе из системы - это хорошо, поскольку вы не хотите, чтобы пользователь, который войдет в систему, использовал вашу структуру с настройками предыдущего пользователя. И, таким образом, приложение несет ответственность за настройку вашей структуры после каждого входа в систему. Они также могут рассмотреть возможность удаления UserDefaults/очистки кешей/что угодно, когда другой пользователь входит в систему (не после того, как пользователь нажимает кнопку «Выйти»). - person Yury Bogdanov; 06.02.2020

Userdefaults — это здорово, но иногда это превращается в беспорядок, если у вас есть много информации, которую нужно сохранить. Особенно тот факт, что вам нужно будет управлять отношениями ключ/значение во всем приложении, и обычно ключей оказывается более 10 плюс ..

Просто предложение, но почему бы не использовать CoreData для управления моделями и хранения данных в sqlite db на устройстве. Когда фреймворк загружен, вы можете проверить, существуют ли данные, если нет, то получить их.

Я бы предложил использовать функциональность, предоставляемую Apple изначально, а не использовать сторонние решения, такие как Realm, со сторонними вам нужно будет обновить их до последней версии, чтобы все работало нормально.

Пожалуйста, прочитайте их, чтобы устранить любую путаницу. https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/

Учебник по использованию Coredata: https://www.raywenderlich.com/7569-getting-started-with-core-data-tutorial

person Muneeb Awan    schedule 01.02.2020