编码类错误的Decode int属性

时间:2012-07-29 13:51:28

标签: iphone ios decode encode

@interface Esame : NSObject{
    NSString *nome;
    int voto;
    int crediti;
    int anno;
}

@property (nonatomic, retain) NSString *nome;


- (id)initWithNome:(NSString*)nome voto:(int)voto crediti:(int)crediti anno:(int)anno;

@end

这是我的实施

#import "Esame.h"

@implementation Esame

@synthesize nome;


- (id)initWithNome:(NSString*)name voto:(int)voto crediti:(int)crediti anno:(int)anno {
    if ((self = [super init])) {
        self.nome = name;



    }
    return self;
}

- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super init]) {

        nome = [decoder decodeObjectForKey:@"nome"] ;
        voto = [decoder decodeIntForKey:@"voto"];
        crediti = [decoder decodeIntForKey:@"crediti"];
        anno = [decoder decodeIntForKey:@"anno"];

    }
    return self;
}

- (void)encodeWithCoder:(NSCoder *)encoder {

    if (nome) [encoder encodeObject:nome forKey:@"nome"];

    if (voto) [encoder encodeInt:voto forKey:@"voto"];
    if (crediti) [encoder encodeInt:crediti forKey:@"crediti"];
    if (anno) [encoder encodeInt:anno forKey:@"anno"];

}


@end

我收到同样的奇怪错误......特别是在NSString中...出了什么问题?

1 个答案:

答案 0 :(得分:1)

尝试在encodeInt:之前删除您的条件;你应该总是编码所有成员。此外,您应该声明您使用@interface Esame : NSObject<NSCoding>符合NSCoding。

如果这不起作用,请尝试发布您看到的错误消息。