【发布时间】:2010-11-20 23:04:07
【问题描述】:
我有一个包含 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 什么的吗?
【问题讨论】:
-
你能解决这个问题吗?我有相同的确切数据结构(当然数组中的不同自定义对象)并且我已经尝试实现保存我的字典几天了。我还在我的对象类中实现了 initWitCoder 和 encodeWithCoder,并且我尝试使用 UserDefaults 和 plist,但我都无法工作。任何帮助表示赞赏!
-
@Ryan,您需要使用 NSKeyedArchiver 和 NSCoding 协议,请参阅接受的答案和 Apple 文档。
标签: iphone objective-c nsdictionary save