Here - это мой ответ на другой аналогичный вопрос.
Вы можете установить объект, как это:
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:savingbean];
[currentDefaults setObject:data forKey:@"DATA"];
[currentDefaults synchronize];
и для объекта ПОЛУЧИТЬ так:
NSData *data = [currentDefaults objectForKey:@"DATA"];
SavingBean *token = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Для пользовательского класса вы должны изменить эти методы в вас классе компоненты:
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:[email protected]"":self.userName forKey: @"userName"];
[encoder encodeObject:[email protected]"":self.passWord forKey: @"passWord"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if(self)
{
self.userName = [decoder decodeObjectForKey: @"userName"];
self.passWord = [decoder decodeObjectForKey: @"passWord"];
}
return self;
}
Here самый проголосовавший подобный ответ. Вы также можете получить хорошие вещи оттуда.
Вы также можете использовать JSON Accelerator для создания класса bean. Это очень простой и мощный инструмент.
EDIT:
Класс NSUserDefaults предоставляет удобные методы для доступа к распространенных типов, таких как поплавки, удваивается, целые числа, булевы и URL. Объектом по умолчанию должен быть список свойств, то есть экземпляр (или для коллекций - комбинация экземпляров): NSData, NSString, NSNumber, NSDate, NSArray или NSDictionary. Если вы хотите сохранить какой-либо объект типа , его обычно необходимо архивировать для создания экземпляра NSData .
Значения, возвращаемые из NSUserDefaults, неизменяемы, даже если в качестве значения задан изменяемый объект .Например, если вы установите изменяемую строку как значение для «MyStringDefault», строка, которую вы позже получите , используя stringForKey: будет неизменной.
Примечание: система по умолчанию, по которой вы программным путем получаете доступ к через класс NSUserDefaults, использует списки свойств для хранения объектов , представляющих пользовательские настройки. Это ограничение, по-видимому, исключает множество объектов, таких как объекты NSColor и NSFont, из системы по умолчанию пользователя . Но если объекты соответствуют протоколу NSCoding , они могут быть заархивированы в объекты NSData, которые являются свойством совместимых с списком объектов. Для получения информации о том, как это сделать, см. "" Сохранение NSColor в настройках пользователя по умолчанию ""; хотя в этой статье основное внимание уделяется объектам NSColor, процедура может быть применена к любому объекту, который может быть архивирован .
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsuserdefaults_Class/Reference/Reference.html
EDIT:
При определении предпочтений своего приложения, то лучше использовать простые значения и типы данных, когда это возможно. Система предпочтений - , построенная вокруг типов данных списка свойств, таких как строки, цифры и цифры . Хотя вы можете использовать объект NSData для хранения произвольных объектов в настройках, делать это не рекомендуется в большинстве случаев.
Сохранение объектов настойчиво означает, что ваше приложение должно декодировать этот объект в какой-то момент. В случае предпочтений хранимый объект означает декодирование объекта каждый раз, когда вы получаете доступ к предпочтению. Это также означает, что более новая версия вашего приложения должна гарантировать, что это , способное декодировать объекты, созданные и записанные на диск, с использованием более ранней версии вашего приложения, которая потенциально подвержена ошибкам.
Лучшим подходом к предпочтениям является сохранение простых строк и значений и их использование для создания объектов, необходимых вашему приложению. Сохранение простых значений означает, что ваше приложение всегда может получить доступ к значению. Единственное, что меняется от выпуска к выпуску, - это интерпретация простого значения и объектов, созданных вашим приложением.
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/UserDefaults/AboutPreferenceDomains/AboutPreferenceDomains.html#//apple_ref/doc/uid/10000059i-CH2-SW2
Посмотрите на моей Lib: https://github.com/alexburtnik/SettingsBox Это позволяет сохранять пользовательские объекты, а также все общие объекты фонда и примитивы NSUserDefaults всего за несколько строк кода. – alexburtnik