0
    NSMutableArray *esami = [[NSMutableArray alloc] init];
    NSArray *paths = NSSearchPathForDirectoriesInDomains
    (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    //make a file name to write the data to using the
    //documents directory:
    NSString *fullFileName = [NSString stringWithFormat:@"%@/new", documentsDirectory];
    esami = [NSKeyedUnarchiver unarchiveObjectWithFile:fullFileName];
    Esame *add=[[Esame alloc]initWithNome:materia voto:voto crediti:crediti anno:anno];
    [esami addObject:add];
    [NSKeyedArchiver archiveRootObject:esami toFile:fullFileName];

なぜこのコードが機能しないのか理解できません.ルートディレクトリに既に書き込まれているファイルを使用する場合、新しい要素を配列に追加して書き込むことができますが、別のファイル(この場合は新しい)を使用すると動作しません。

4

1 に答える 1

0

理由はわかりませんが、このコードでこの問題を解決しました

NSMutableArray *esami = [NSKeyedUnarchiver unarchiveObjectWithFile:fullFileName];

if(esami.count==0){
    NSMutableArray *esamiNew=[[NSMutableArray alloc] init];
    [esamiNew addObject:[[Esame alloc]initWithNome:materia voto:voto crediti:crediti anno:anno]];

    [NSKeyedArchiver archiveRootObject:esamiNew toFile:fullFileName];

}
else{

    [esami addObject:[[Esame alloc]initWithNome:materia voto:voto crediti:crediti anno:anno]];
    NSLog(@"num %d",esami.count);
    [NSKeyedArchiver archiveRootObject:esami toFile:fullFileName];

}

バグですか??

于 2012-07-30T10:41:01.787 に答える