正在NSMutableData中加载层次结构



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

然而,对于(在gameData中的NSArray*firstData),编译器告诉我gameData不会响应计数,因为它是NSMutableData而不是NSMutabbleArray等,我如何准确地重新实现上面的代码?

保存:

  • 使用多个NSData创建NSArray
  • 使用NSKeyedArchiver从NSArray生成NSData

装载:

  • 从文件加载NSData
  • 使用NSKeyedUnarchiver提取NSArray
  • 循环你的NSArray

代码中:NSData*data0=[NSData数据];//数据1NSData*data1=[NSData数据];//数据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];

最新更新