2013-04-26 2 views
0

Это очень сложный вопрос, потому что я не хочу наводнить вас всем своим кодом, поскольку большинство из них не укладывается в проблему. Поэтому я не удивлюсь, если это останется без ответа. Хотя, это может быть что-то простое, что мне не хватает ха-ха. Вот оно:Приложение Objective-C iOS не хранит данные в массиве объектов

Итак, мое приложение хранит массив через [encoder] в моем приложении appDelegate. Приложение заполнено объектами, которые создаются в отдельном классе NSObject. Подумайте об этом таким образом для примеров: У меня есть мой основной класс viewController. И в appDelegate я определяю/кодирую массив объектов. Теперь, в основном, я заполняю массив 10 «машинами». Мой класс автомобиля имеет такие переменные, как цвет, модель, модель и т. Д. Теперь, когда я сохраняю и перезапускаю приложение, массив, который я сохранил, теперь представляет собой массив, содержащий 10 элементов, но, похоже, он забыл все переменные для каждый экземпляр класса автомобиля.

Когда я перезапускаю приложение, если я вызываю NSLog (@ "% @", массив в appDelegate); Он печатает 10 строк, которые выглядят так: «" Итак, я знаю, что массив хранится с 10 элементами, а 10 элементов сохранены, но, как я уже сказал, все переменные исчезли.

Примечание: при первом запуске приложения, и массив заполняется в первый раз, я могу получить доступ ко всем переменным отлично, и ничего не получается.

Спасибо за любую помощь, которую я могу получить!

+0

Пожалуйста, разместите код для внедрения initWithCoder и encodeWithCoder в классе «автомобиль». Если вы их не реализовали, это ваша проблема. – Wain

+0

ха-ха да, это была моя проблема. Я видел это вскоре после публикации. Я уже сохранил строку из другого класса и полностью забыл о том, что в коде/encodeWithCoder hahaha. Спасибо! Опубликуйте то, что вы сказали как решение, и я помечаю его как ответ. –

+0

Спасибо, я добавил немного больше, чтобы помочь будущим читателям :-) – Wain

ответ

0

Мы должны увидеть код для вашей реализации initWithCoder и encodeWithCoder в классе «автомобиль». Если вы их не реализовали, это ваша проблема.

Что, вероятно, происходит в настоящее время, так это то, что вызывается только реализация этих методов суперкласса. Это означает, что правильный класс будет воссоздан, но данные не будут сохранены или восстановлены.

NSCoding protocol reference doc.

0

Ваш основной класс, а также все объекты, которые вы помещаете в массив, должны соответствовать NSCoding. Если объекты в массиве не совместимы с NSCoding, они не будут автоматически закодированы.