我有一个对象,其属性可能为零.我应该如何在encodeWithCoder(和decodeWithCoder)中实现它?
- (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_duration forKey:kDuration]; //_duration could be nil }
Johannes Fah.. 13
Aaron的解决方案很干净,清楚地传达了正在发生的事情.但是,我找不到任何信息,是否可以传递nil
给encodeObject:forKey:
我,所以我测试了它.事实证明你可以安全地这样做(如果我遗漏了某些东西,请纠正我).
所以你可以简单地说
- (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_duration forKey:kDuration]; //_duration could be nil }
即使_duration为零,这也行.在这种情况下,它根本不会将密钥写入编码器.