我正在我的应用程序中实施状态恢复。窗口恢复得很好,所以现在我正在尝试对视图控制器的某些属性进行编码,这些属性与用于保留视图控制器视图状态的索引相关。我有:
@property (nonatomic) int index; //prefer to use an int
@property (nonatomic) NSInteger *testint; //I tried with NSInteger as well and got the same error code
我将以下内容添加到我的视图控制器 .m 文件中(也尝试使用 NSInteger,但我正在粘贴 int 代码)
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.index forKey:@"self.index"];
[super encodeRestorableStateWithCoder:coder];
}
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
self.index = [coder decodeObjectForKey:@"self.index"];
[super decodeRestorableStateWithCoder:coder];
}
无论我使用 int 还是 NSInteger,只要我输入这些信息,我都会收到相同的错误消息(无法构建)
为了
[coder encodeObject:self.index forKey:@"self.index"];
错误消息是“不兼容的 integet 到指针转换将 'int' 发送到类型 id 的参数。”
而对于
self.index = [coder decodeObjectForKey:@"self.index"];
错误是“从'id'分配给'int'的整数转换指针不兼容”
显然,这些错误是其中之一。但是必须有一种方法来编码一个 int,即使没有,为什么即使我使用 NSInteger test int 并将上述所有内容替换为 self.testint 而不是 self.index,我也会得到这些错误。在后一种情况下,我使用的是指针。
所以我的问题是我如何编码一个int(首选)或一个NSInteger?谢谢你。