2013-12-17 4 views
2

Я попытался преобразовать свои объекты в экземпляры NSData, помещая их в NSArray и сохраняя массив по умолчанию пользователя. Я также попытался помещать объекты в NSArray, преобразовывая массив в экземпляр NSData и сохраняя его в пользовательских значениях по умолчанию. Оба способа я получаю следующее сообщение об ошибке:Как сохранить пользовательский объект по умолчанию пользователя в объекте c?

«завершающее приложение из-за неперехваченное исключение 'NSInvalidArgumentException', reason: '-[GelirObject encodeWithCoder:]: unrecognized selector sent to instance 0x89dbf90" The name of my custom object is GelirObject.

Я знаю, что пользовательские объекты не могут быть сохранены пользователем по умолчанию напрямую, поэтому я использовал NSData, но до сих пор я получаю эту ошибку.. ?. Как я могу хранить свои объекты без получения ошибки

+1

Я не думаю, что вы правильно сериализовали объект в NSData. Можете ли вы показать, как вы пытались это сделать? – Chuck

+1

Возможно, вы назначаете объект типа 'GelirObject *' переменной типа NSData *, которую затем пытаетесь сохранить для пользовательских значений по умолчанию. – Macondo2Seattle

+0

Я сериализовал этот путь: NSData * incomeObjectData = [NSKeyedArchiver archivedDataWithRootObject: incomeObject]; Я уже проверял сообщение Хранение данных в NSUserDefaults, но я не мог понять, почему я получил ошибку – user3113020

ответ

0

Ну прежде всего, это просто неправильно, что вы делаете вы не должны положить много информации внутри NSUserDefaults что касается вопроса:.

NSData *incomeObjectData = [NSKeyedArchiver archivedDataWithRootObject:incomeObject]; 

Ваш GelirObject не соответствует протоколу NSCoding. Вот почему ваше приложение кричит. Просто выполните необходимые методы initWithCoder: и encodeWithCoder:.

Смежные вопросы