2015-06-05 8 views
-1

Я - новый разработчик iOS и не имею никакого предыдущего опыта работы с Objective-C, хотя я знаком с языком программирования C и парадигмой объектно-ориентированного программирования.Как сделать NSMutableArray сохраняющимся с течением времени?

Чтобы начать, я пошел за учебником Start Developing iOS Apps Today и разработал базовое приложение для списка дел, в котором каждый элемент представляет собой объект NSMutableString, хранящийся в NSMutableArray. Мое приложение работает правильно. Однако мой список дел исчезает, когда я ухожу и перезапускаю приложение на симуляторе. Очевидно, это происходит потому, что я не предоставил никакого способа сделать массив сохраненным с течением времени.

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

Заранее спасибо.

ответ

0

Чтобы данные сохранялись со временем, я предлагаю вам ознакомиться с NSCoding, а также CoreData. Оба они просты в использовании и реализуются.

NSCoding example

CoreData example

0

Даже если есть решения, как CoreData, которые являются специфическими для решения этой проблемы, вы можете что-то более легкий и быстрый в реализации, но еще чище, чем экономить мусор в По умолчанию пользователи.

NSMutableArray является NSCoding уступчивый, так до тех пор, пока элементы содержащиеся в нем NSCoding соответствует, а также, вы можете легко хранить его в файл и извлечь его обратно с методами

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag 
- (NSArray *)initWithContentsOfFile:(NSString *)aPath 

Имейте в виду, что у вас могут быть проблемы, если вы сохраняете примитивные типы, такие как логические значения, поэтому я советую сохранить их с помощью NSNumber.

+0

Спасибо. Теперь проблема в том, что я не знаю, где использовать эти методы. Мой массив создается в методе 'viewDidLoad' и предварительно заполняется некоторыми исходными данными. Поэтому я должен использовать метод 'initWithContentsOfFile' внутри' viewDidLoad'. Как насчет процесса написания? Где это нужно положить? – Dree

+0

хорошо, это зависит от ваших потребностей и архитектуры вашего приложения. Возможно, вы захотите загрузить его в любой метод init/viewDidLoad, и вы можете захотеть сохранить его при любых изменениях, вам решать, когда нужно сохранять/загружать. –