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];