Хранение постоянного NSArray объектов модели

#ios #objective-c #model #nsarray #persistent-storage

#iOS #objective-c #Модель #nsarray #постоянное хранилище

Вопрос:

В настоящее время у меня есть NSArray объектов модели, например:

 <__NSArrayM 0xb63ea40>(
<Car> 
   [carModel]: BMW
   [carYear]: January 1998
   [carName]: Series 3
</Car>,
<Car> 
   [carModel]: Audi
   [carYear]: September 2002
   [carName]: AX1245
</Car>
)
  

Я хочу постоянно сохранять эти данные, чтобы они были доступны, даже если приложение отключено или пользователь выходит из приложения. Есть ли какие-либо рекомендации о том, как сделать это эффективно?

Комментарии:

1. Основные данные, если вы хотите сделать это совершенно правильно. Однако, судя по вашему вопросу, на вашем текущем уровне опыта вам может быть намного проще и быстрее просто использовать NSUserDefaults.

Ответ №1:

Если массив достаточно мал, вы можете использовать NSUserDefaults .

Например:

 // Store the array
[[NSUserDefaults standardUserDefaults] setObject:carArray forKey:@"carArrayKey"];

// Retrieve the array
NSArray *carArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"carArrayKey"];
  

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

Комментарии:

1. В лучшем случае у меня, вероятно, будет ~ 20 объектов, хранящихся в массиве, но я понимаю вашу точку зрения относительно Core Data. Я рассмотрю оба, спасибо за вашу помощь.

2. NSUserDefaults должно быть достаточно для массива такого размера. Если вы используете больший набор данных или заполняете a UITableView этой информацией, Core Data творит чудеса!

Ответ №2:

Я бы просто добавил это в качестве комментария, но у меня нет репутации.

Почему бы вам просто не использовать Core Data для выполнения чего-то подобного? Вы можете создать единый объект Car, а затем управлять им с помощью Core Data. Это сохранит ваши данные для приложения.

Комментарии:

1. Это должно быть возможно, но я думаю, что Core Data значительно усложняет хранение некоторых простых данных.