Решение использовать основные данные или NSUserDefaults

У меня есть функция в моем приложении, которая позволяет пользователям приглашать своих друзей (через facebook или друзей в свою адресную книгу). У большинства людей будет < 5K друзей с некоторыми людьми, которые имеют больше (может быть, максимум, как друзья 10K?).

Я хочу отслеживать друзей, которых они пригласили, чтобы они не приглашали их повторно. Для этого я сохраняю диктов друзей в NSUserDefaults для хранения этой информации. Мне интересно, хватит ли для этого NSUserDefaults или мне нужно использовать Core Data.

Кроме того, я планирую добавить функцию, позволяющую им приглашать друзей к определенному событию. (в нашем приложении много событий.) Если я хочу отслеживать, какие друзья были приглашены на какое событие, следует ли мне использовать Core Data? Будет ли NSUserDefaults для этого? (Я предполагаю, что этого не будет). И, наконец, следует ли использовать Core Data для этого или должна быть сохранена сторона сервера?

Ответ 1

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

Вы должны использовать Core Data для хранения большого списка элементов. Насколько ваш последний вопрос, ничто не мешает вам использовать как Core Data, так и бэкэнд для хранения ваших данных. Фактически, существуют рамки для облегчения именно этого. Взгляните на RestKit.

Ответ 2

Ваше предположение верно! NSUserDefaults недостаточно и надежно хранить и запрашивать огромный объем данных. Представляется целесообразным, если у вас будет база данных (база данных на сервере) для хранения событий и их приглашенных, чтобы сохранить согласованность информации пользователя (если пользователь зарегистрировался в вашем приложении из другого устройства, поддерживающего приложение, тогда он получит всю сохраненную им информацию). Также создайте таблицы в базе данных таким образом, чтобы вы могли легко запросить необходимую информацию. Что-то вроде, для каждого из событий есть какое-то поле, в котором хранится/обновляется его информация о приглашениях. Когда вы хотите знать, что ваш единственный запрос должен прийти со всем вашим результатом. Это приложит очень хороший эффект от вашего приложения, что приложение работает довольно быстро.

Ответ 3

Что вы планируете сохранить в своем словаре? Если это только строка s, тогда это нормально, но если вы планируете хранить изображения, я бы рекомендовал Core Data.