2016-11-16 10 views
1

У меня есть социальное приложение, где пользователю могут нравиться фотографии ... Поэтому, чтобы не дожидаться получения данных с сервера, я хочу сохранить их на устройстве, массив строк, содержащий объектные объекты фотографий. Вопрос заключается в том, что, учитывая, что пользователю может нравиться тысячи фотографий, хорошо ли использовать UserDefaults для достижения этого?Swift - Сохранить огромный массив строк с UserDefaults

+1

Голосование, чтобы закрыть, потому что это не конкретный вопрос, но короткий ответ: нет. Пользовательские значения по умолчанию являются средними для сохранения предпочтений, а не данных. Используйте JSON-файл в каталоге «Документы», используйте «Основные данные», используйте простой sqlite ... но не «Пользовательские настройки по умолчанию». – Cyrille

+0

Не знаете, почему это не правильный вопрос, но спасибо за ответ! –

+0

Я согласен с Кириллом, если вам нужно какое-либо подтверждение. Хранение данных на телефоне может быть несколько сложным. Я потратил некоторое время, работая через несколько учебников, прежде чем копаться в CoreData, но это стоит того, чтобы учиться! Я не слишком много перепутал с другими методами. – Sethmr

ответ

1

EDIT Как отметил Эрик Ая в комментариях, NSUserDefaults не загружаются автоматически в памяти, когда приложение запусках.

NSUserDefaults загружаются в память, когда приложение запускает Если у вас есть особенно большое количество данных, хранящихся в NSUserDefaults то время, которое требуется приложение для запуска для загрузки NSUserDefaults будет влиять на количество IO требуется для извлечения ваших данных. Предполагаемый прецедент для NSUserDefaults заключается в хранении небольших наборов данных, таких как пользовательские настройки по умолчанию.

Plist может быть лучшим решением (NSUserDefaults - это просто Plist, разница заключается в том, что он загружается автоматически для вас, когда приложение запускает ). У вас все еще будут проблемы с временем загрузки, когда вы решите захватить Plist, когда будете загружать файл (Plist) в память. Вы сможете справиться с этим с чем-то вроде индикатора выполнения или индикатора активности, который дает пользователю более приятный опыт. , чем ждать дольше, чем обычно, для открытия приложения . CoreData - это еще один вариант (обычно предназначенный для более сложных структур данных, чем строк, с другой стороны, он дает вам возможность масштабировать ваши потребности в хранении очень легко, если сложность ваших данных увеличивается), есть довольно крутая кривая обучения, но это замечательная особенность и хорошо документирована Apple: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/

Я бы также рекомендовал хранить данные на сервере, где вы могли бы открыть его через API и кэшировать ответ, используя Plist/CoreData/Что бы вы ни хотели. Таким образом, если ваши пользователи меняют устройства, они все равно будут иметь доступ к тем же данным, которые хранятся удаленно.

Удачи вам!

+1

'NSUserDefaults загружаются в память, когда ваше приложение запускает Nope. NSUserDefaults на самом деле является plist, хранящимся в контейнере приложения, и содержимое загружается только в том случае, если вы делаете это с помощью кода. Кроме этого, ваш ответ правильный. – Moritz

+1

@ EricAya, вы правы, по какой-то причине у меня всегда застрял в голове, что он загружается при запуске приложения. Я исправлю свой ответ, ура! – mike

 Смежные вопросы

  • Нет связанных вопросов^_^