У меня есть словарь (это изменчиво, если это имеет значение), которое содержит nsarrays, которые, в свою очередь, содержат (подкласс NSObject) s Я реализовал initWithCoder и encodeWithCoder так:Сохранение NSDictionary из NSArrays обычая объектов
-(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 или что-то?
Вы могли понять это? У меня такая же точная структура данных (разные пользовательские объекты в массиве, конечно), и я пытался реализовать сохранение моего словаря на пару дней. Я также реализовал initWitCoder и encodeWithCoder в классе объектов, и я попытался использовать UserDefaults и plists, но я не могу заставить их работать. Любая помощь ценится! – RyanG
@Ryan, вам нужно использовать NSKeyedArchiver и NSCoding Protocol, см. Принятый ответ и документы Apple. –