2013-07-09 2 views
1

До сих пор я использовал NSUserDefaults, чтобы сохранить мой NSMutableDictionaries, но теперь я хочу сохранить словарь, который будет выглядеть следующим образом: он будет содержать разные объекты с ключами: модель автомобиля. Класс Car будет иметь словарь основных характеристик и словаря Person объектов (которые используют автомобиль). Каждый класс Person будет иметь личную информацию как свойства. Я могу сделать все остальное, но не сохранить первый NSMutableDictionary, который будет хранить всю эту информацию. (Словари должны содержать только ошибку, не относящуюся к свойствам). Каков подходящий способ ее сохранения?iOS Как сохранить словарь объектов класса?

ответ

2

Вы должны использовать архиватор, такой как NSKeyedArchiver, для сериализации/десериализации объектов в архив NSData.

Все объекты в графе

  • автомобилей
  • Person
  • Все свойства этих объектов не является оценочным объект (т.е. не NSString, NSDate, NSArray, NSNumber, ...)

должен принять протокол NSCoding. Для этого вы используете:

-(id)initWithCoder:(NSCoder *)coder 
{ 
    // Tell the unarchiver how to read your object properties from the archive 
    _oneObjectProperty = [coder decodeObjectForKey:@"propertyKey"]; 
    ..... 
} 

-(void)encodeWithCoder:(NSCoder *)coder 
{ 
    // Tell the archiver how to serialise your object properties 
    [coder encodeObject:_oneObjectProperty ForKey:@"propertyKey"]; 
    .... 
} 

Вы найдете пример кода здесь: Why NSUserDefaults failed to save NSMutableDictionary in iPhone SDK?

+0

Спасибо большое :) Это работало отлично для меня. – vejmartin

0

Вы можете использовать NSKeyedArchiver для сохранения объектов и NSKeyUnarchiver для их извлечения.