NSCoder:不使用NS_ENUM编码枚举

时间:2013-08-21 17:38:10

标签: ios serialization enums encode

我不想强迫我的用户更新到iOS 6,因此我想找到一种方法将NSCoder用于自定义类型和枚举。

我发现this article解释了最近引入的NS_ENUM宏,它基本上使运行时库更容易检索自定义枚举/类型的元数据。

是否有替代方式来编码自定义枚举?

我找到this answer,编码为INT我需要做什么?枚举是int但我不确定它们是否可以更改为int32或int64。

2 个答案:

答案 0 :(得分:1)

是的,将其编码为int,你应该没问题。您可以使用其值创建NSNumber,然后对其进行编码。那将是最常见的情况。

答案 1 :(得分:0)

只需将值编码为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;
  }