如何在Objective-C中解码和编码int变量?
这是我到目前为止所做的,但是应用程序正在终止。
这里的错误是什么?
-(void)encodeWithCoder:(NSCoder*)coder
{
[coder encodeInt:count forKey:@"Count"];
}
-(id)initWithCoder:(NSCoder*)decoder
{
[[decoder decodeIntForKey:@"Count"]copy];
return self;
}
答案 0 :(得分:8)
[decoder decodeIntForKey:@"Count"]
会返回int
。并且您将邮件copy
发送给int
- >崩溃。
在Objective-C中,简单数据类型不是对象。所以你不能向他们发送消息。 Ints是简单的c数据类型。
答案 1 :(得分:6)
V1ru8是对的。但是,我更喜欢将int编码为NSNumbers。像这样:
- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:[NSNumber numberWithInt:self.count] forKey:@"Count"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.count = [[decoder decodeObjectForKey:@"Count"] intValue];
}
return self;
}