#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
должно быть достаточно для массива такого размера. Если вы используете больший набор данных или заполняете aUITableView
этой информацией, Core Data творит чудеса!
Ответ №2:
Я бы просто добавил это в качестве комментария, но у меня нет репутации.
Почему бы вам просто не использовать Core Data для выполнения чего-то подобного? Вы можете создать единый объект Car, а затем управлять им с помощью Core Data. Это сохранит ваши данные для приложения.
Комментарии:
1. Это должно быть возможно, но я думаю, что Core Data значительно усложняет хранение некоторых простых данных.