将NSDictionary保存到自定义对象的NSArray

时间:2010-11-20 23:04:08

标签: iphone objective-c nsdictionary save

我有一个字典(如果它有所不同,它是可变的)包含nsarrays,而nsarrays又包含(NSObject的子类)s 我已经实现了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 个答案:

答案 0 :(得分:2)

[NSDictionary writeToFile: atomically:]使用NSPropertyListSerialization,它只能记录原始对象的子集(数字,字符串,日期和数据)。因此,虽然您可以使用NSCodingNSKeyedArchiver来存档对象,但另一个选项是将对象编组为字符串或数据表示形式,将 存储在属性列表中,并在装载时再次解组。

答案 1 :(得分:0)

是的,您想使用NSKeyedArchiver

您可以在此处找到所需的所有信息:

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