Сохранить NSMutableArray с помощью NSUserDefaults

#iphone #objective-c #ios #nsmutablearray #nsuserdefaults

#iPhone #objective-c #iOS #nsmutablearray #nsuserdefaults

Вопрос:

я француз, поэтому, возможно, я допущу некоторые ошибки, извините за это: D

Я объясняю свою проблему, у меня есть XMLParser, который генерирует NSString (заголовок, категория, URL, …), Я бы хотел, чтобы генерируемый поток сохранялся, чтобы пользователь мог читать поток, даже если он не подключен к Интернету.

Сгенерированный поток можно найти здесь ==> http://www.recontv.fr/testXml.xml

Я пробую разные решения, и каждый раз я должен ошибаться, но это не работает. : (

Вам нужен мой код? Я объяснил свою проблему?

Заранее благодарим вас за помощь!

PS: Я публикую на разных форумах ответ, если я беру его где-то еще, я тоже выбираю здесь.

Ответ №1:

NSUserDefaults на самом деле не предназначен для сохранения массива из XML в него. Ваши основные решения — сохранить XML в файл и повторно проанализировать, когда пользователю необходимо получить доступ к информации в автономном режиме, или вы можете сохранить сам NSArray в файл, используя либо его методы writeToFile: , либо NSKeyedArchiver / NSKeyedUnarchiver. В каждом случае вы должны убедиться, что объекты в вашем массиве соответствуют протоколу NSCoding.

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

1. хорошо, пока я жду, я продолжаю искать и нахожу протокол NSCoding, но я не знал, как это сделать. Я уже создал классы «encodeWithCoder» и «initWithCoder», но куда мне поместить код для сохранения массива? в XMLParser или в AppDelegate (где был инициализирован анализатор)?

2. Вы упорядочиваете строки / элементы, которые вы анализируете, в объекты контейнера (вы можете создать свои собственные или использовать библиотеку, такую как wonderxml code.google.com/p/wonderxml ), помещая их в массив по ходу работы, затем сохраните массив после завершения синтаксического анализа.

3. спасибо, я сделаю это и вернусь, если у меня возникнут вопросы, но я думаю, что нет ^^