1

スコア (NSNumber) を plist ファイルに保存してからロードしようとしています。これは私の保存方法です:

- (void)saveScore:(int)iScore;
{
    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    NSNumber *score=[NSNumber numberWithInt:iScore];

    [archiver encodeObject:[NSArray arrayWithObject:score]];
    [archiver finishEncoding];
    [data writeToFile:[self dataFilePath] atomically:YES];

}

私がチェックしたところ、データがファイルに保存されました。

これは私のロード方法です:

-(void)LoadData{

    NSString *filePath = [self dataFilePath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
    {
        NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
        NSNumber * number= ((NSNumber *)[array objectAtIndex:0]);
        int score=[number intValue];
    }
}

チェックしたところ、dataFilePath は正しいパスを返します。しかし、配列はアイテムを取得しません。

4

1 に答える 1

3

を使用しNSKeyedArchiverてファイルを作成する場合NSKeyedUnarchiverは、ファイルを読み込むために を使用する必要があります。

ファイルを読み込むために使用したい場合は、次を使用[[NSMutableArray alloc] initWithContentsOfFile:...して配列をファイルに保存する必要があります[data writeToFile:path atomically:YES];

于 2013-05-27T17:27:40.113 に答える