1

NSMutableDataに階層システムはありますか?もしそうなら、どのように私は階層的な方法で情報をロードしますか?例

//Create path to saving location
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSMutableData *gameData;
NSKeyedUnarchiver *decoder;
NSString *documentPath = [documentsDirectory stringByAppendingPathComponent:@"tierSave.dat"];
gameData = [NSData dataWithContentsOfFile:documentPath];
//end

//start loading
    for(NSArray* firstData in gameData){

    decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];

    int level1 = [decoder decodeIntegerForKey:level1];
    }
//end

ただし、for(NSArray * firstData in gameData)では、コンパイラは、gameDataがNSMutableArrayなどではなくNSMutableDataであるため、countに応答しないことを通知します。上記のコードを正確に再実装するにはどうすればよいですか?

4

1 に答える 1

1

保存:

  • 複数のNSDataを使用してNSArrayを作成します
  • NSKeyedArchiverを使用して、NSArrayからNSDataを作成します

読み込み中:

  • ファイルからNSDataをロードする
  • NSKeyedUnarchiverを使用してNSArrayを抽出します
  • NSArrayをループします

コード内:NSData * data0 = [NSData data]; //データ1NSData* data1 = [NSData data]; //データ2

/////////// SAVE
// now make a array
NSArray *array = [NSArray arrayWithObjects:data0, data1, nil];

// now archive the data
NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:array];
// archivedData contains now a binary plist with your archived array including your NSData objects

[archivedData writeToFile:path atomically:YES];



/////// LOAD
NSData *archivedDataFromFile = [NSData dataWithContentsOfFile:path];

NSArray *newArray = [NSKeyedUnarchiver unarchiveObjectWithData:archivedDataFromFile];

NSData *dataLoaded0 = [newArray objectAtIndex:0];
于 2012-04-04T08:52:05.247 に答える