编码int或NSInteger进行状态恢复

时间:2014-11-07 20:21:57

标签: ios objective-c state-restoration

我正在我的应用中实施状态恢复。窗口恢复正常,所以现在我尝试编码视图控制器的某些属性,这些属性与用于保存视图控制器视图状态的索引相关。我有:

@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?谢谢。

1 个答案:

答案 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];
}