我不想强迫我的用户更新到 iOS 6,因此我想找到一种方法来使用带有自定义类型和枚举的 NSCoder。
我发现这篇文章解释了最近引入的 NS_ENUM 宏,它基本上使运行时库更容易检索自定义枚举/类型的元数据。
是否有另一种方法来编码自定义枚举?
我找到了这个答案,我需要做的就是编码为 INT 吗?枚举是 int 但我不确定它们是否可以更改为 int32 或 int64。
是的,将其编码为 int 就可以了。您可以使用其值创建一个 NSNumber,然后对其进行编码。那将是最常见的情况。
只需将值编码为 NSNUMBER。将此用于任何版本的 iOS。
// #pragma mark Protocolo NSCoding
- (void)encodeWithCoder:(nonnull NSCoder *)aCoder {
[aCoder encodeObject:@(self.customValue) forKey:@"customKey"];
}
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {
self = [super init];
if (self) {
self.customValue = [aDecoder decodeObjectForKey:@"customKey"];
}
return self;
}