在Objective-C中编码和解码int变量

时间:2010-08-17 06:32:31

标签: objective-c cocoa

如何在Objective-C中解码和编码int变量?

这是我到目前为止所做的,但是应用程序正在终止。

这里的错误是什么?

-(void)encodeWithCoder:(NSCoder*)coder
{
   [coder encodeInt:count forKey:@"Count"];
}

-(id)initWithCoder:(NSCoder*)decoder
{
   [[decoder decodeIntForKey:@"Count"]copy];
   return self;
}

2 个答案:

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