我正在我的应用中实施状态恢复。窗口恢复正常,所以现在我尝试编码视图控制器的某些属性,这些属性与用于保存视图控制器视图状态的索引相关。我有:
@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"];
错误信息是"不兼容的指针转换发送' int'到类型为id的参数。"
而
self.index = [coder decodeObjectForKey:@"self.index"];
错误是"指向整数转换的不兼容指针分配给' int'来自' id'"
显然,这些错误是相同的。但是必须有一种编码int的方法,即使没有,为什么即使我使用NSInteger test int并用self.testint而不是self.index替换所有上述错误,我也会得到这些错误。在后一种情况下,我使用指针。
所以我的问题是如何编码int(首选)或NSInteger?谢谢。
答案 0 :(得分:0)
你是否真的试图将指针用于整数' * testint'。我认为这是相当的,' testint'。 以下内容可以解决您的错误。
@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
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[coder encodeInt:self.index forKey:@"self.index"];
[super encodeRestorableStateWithCoder:coder];
}
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
self.index = [coder decodeIntForKey:@"self.index"];
[super decodeRestorableStateWithCoder:coder];
}