2012-04-04 42 views
1

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 

但是在(NSArray中*第一资讯在GAMEDATA),编译器告诉我,因为它是一个NSMutableData代替的NSMutableArray等GAMEDATA不会响应来算,我怎么恰好重新实现代码以上?

回答

1

节能:

  • 与多个NSData的
  • 使用的NSKeyedArchiver创建一个NSArray的从你的NSArray做出的NSData

加载:

  • 从文件加载一个的NSData
  • 使用NSKeyedUnarchiver提取所述的NSArray
  • 环路您的NSArray

在代码: 的NSData * DATA0 = [NSData的数据]; // Data 1 NSData * data1 = [NSData data]; // 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]; 
+0

你介意更具体一点吗?我对此很新颖。谢谢 – Bek 2012-04-04 10:45:48

+0

更好? – 2012-04-04 11:16:31

+0

这很简单明了,我会尝试一下。谢谢你的时间!祝你有美好的一天 – Bek 2012-04-04 15:40:27