0
@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で...何が問題になっていますか?

4

1 に答える 1

1

;の前に条件文を削除してみてくださいencodeInt:。おそらく常にすべてのメンバーをエンコードする必要があります。また、おそらくNSCodingに準拠していることを宣言する必要があります@interface Esame : NSObject<NSCoding>

これが機能しない場合は、表示されているエラーメッセージを投稿してみてください。

于 2012-07-29T13:56:57.047 に答える