【发布时间】:2011-12-19 11:55:21
【问题描述】:
所以,我有一个正在序列化并存储在文件中的视图。在该视图中,n 是 UILabel 的子类,唯一的区别是 live 属性。我在 UILabel 子类中有 initwithcoder 和 encodewithcoder,但我仍然无法在标签中获取自定义变量。我已经包含了我的子类的方法和以下内容。任何帮助表示赞赏。
自定义UILabel:
- (id) initWithCoder:(NSCoder *)decoder
{
self = [super initWithCoder:decoder];
if (self != nil) {
self.live = [decoder decodeBoolForKey:@"live"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeBool:self.live forKey:@"live"];
}
因为我只是取消归档包含标签的视图,所以我假设 ios 不会取消归档自定义标签?
谢谢
【问题讨论】:
-
我不确定您为什么要序列化视图。正确的做法是序列化变量(可能在 plist 中),然后在以后需要时实例化视图。
-
如果您明白我的意思,请显示从外部归档/取消归档标签的代码。此外,您缺少对 super encodeWithCoder 的调用。
-
而且,不出所料,这就是我所缺少的,谢谢。现在一切正常。 unarchiver 只需从文件中获取字节并从数据中加载视图。 @jrturton,如果您将其添加为答案,我会将其标记为正确并推荐您。再次感谢您!
标签: ios uiview uilabel nscoding