Сохранение NSDictionary NSArrays пользовательских объектов - PullRequest
1 голос
/ 21 ноября 2010

У меня есть словарь (изменяемый, если это имеет значение), который содержит nsarrays, которые в свою очередь содержат (подкласс NSObject) Я реализовал initWithCoder и encodeWithCoder следующим образом:

-(id)initWithCoder:(NSCoder *)aDecoder {
    self = [super init];
    self.Title = [aDecoder decodeObjectForKey:@"Title"];
    self.SiteAPIURL = [aDecoder decodeObjectForKey:@"SiteAPIURL"];
    self.ID = [aDecoder decodeObjectForKey:@"ID"];
    return self;
}

-(void) encodeWithCoder:(NSCoder *)aCoder {
    [aCoder encodeObject:self.Title forKey:@"Title"];
    [aCoder encodeObject:self.SiteAPIURL forKey:@"SiteAPIURL"];
    [aCoder encodeObject:self.ID forKey:@"ID"];
}

Но он не сохраняется должным образом, когда я [dictionary writeToFile:savepath atomically:YES]; Так что же я делаю не так, и что такое сериализация и нужно ли мне использовать NSKeyedArchiver или что-то еще?

Ответы [ 2 ]

2 голосов
/ 21 ноября 2010

[NSDictionary writeToFile: atomically:] использует NSPropertyListSerialization, который может записывать только подмножество примитивных объектов (числа, строки, даты и данные).Таким образом, хотя вы можете использовать NSCoding вместе с NSKeyedArchiver для архивации объектов, другой вариант - упорядочить ваши объекты в строку или представление данных, сохранить , который в списке свойств, и снова разархивировать их призагрузка.

0 голосов
/ 21 ноября 2010

Да, вы хотите использовать NSKeyedArchiver

Всю необходимую информацию можно найти здесь:

http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/Archiving/Archiving.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...