@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中...出了什么问题?
答案 0 :(得分:1)
尝试在encodeInt:
之前删除您的条件;你应该总是编码所有成员。此外,您应该声明您使用@interface Esame : NSObject<NSCoding>
符合NSCoding。
如果这不起作用,请尝试发布您看到的错误消息。