2

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

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

是否有另一种方法来编码自定义枚举?

我找到了这个答案,我需要做的就是编码为 INT 吗?枚举是 int 但我不确定它们是否可以更改为 int32 或 int64。

4

2 回答 2

2

是的,将其编码为 int 就可以了。您可以使用其值创建一个 NSNumber,然后对其进行编码。那将是最常见的情况。

于 2013-08-21T17:46:53.677 回答
1

只需将值编码为 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;
  }
于 2018-03-12T22:18:54.250 回答