Ios 如何从NSMutableData访问对象

Ios 如何从NSMutableData访问对象,ios,objective-c,nskeyedarchiver,nsmutabledata,Ios,Objective C,Nskeyedarchiver,Nsmutabledata,我有一个NSMutableArray和一个NSString。这两个文件将存档到NSData并添加到NSMutableData对象 NSData *dataArray= [NSKeyedArchiver archivedDataWithRootObject:mutableArray]; NSData *dataTouchedNumer=[NSKeyedArchiver archivedDataWithRootObject:stringValue]; NSMutabl

我有一个NSMutableArray和一个NSString。这两个文件将存档到NSData并添加到NSMutableData对象

NSData *dataArray= [NSKeyedArchiver archivedDataWithRootObject:mutableArray];
NSData *dataTouchedNumer=[NSKeyedArchiver archivedDataWithRootObject:stringValue];                
NSMutableData *mutableData=[[NSMutableData alloc]init];
[mutableData appendData:dataArray];
[mutableData appendData:dataTouchedNumer];
如何从NSMutableData对象访问每个数据

NSData *dataArray= [NSKeyedArchiver archivedDataWithRootObject:mutableArray];
NSData *dataTouchedNumer=[NSKeyedArchiver archivedDataWithRootObject:stringValue];                
NSMutableData *mutableData=[[NSMutableData alloc]init];
[mutableData appendData:dataArray];
[mutableData appendData:dataTouchedNumer];

根据“
archivedDataWithRootObject:
返回一个
NSData
对象,该对象包含给定根对象的对象图的编码形式。”因此您的
mutableData
对象包含两个这样的编码对象图。问题是您希望从
mutableData
读取哪种类型的数据。用
[mutableData bytes]
简单地读取所有字节,或者用
getBytes:length:
getBytes:range:
读取部分字节,这可能没有多大意义。您无法按照显示的方式执行此操作。如果将两个
NSData
对象一起附加到一个可变数据对象中,则以后无法将它们分开。请尝试以下方法:

要归档这两个对象,请执行以下操作:

NSMutableArray *mutableArray = ... // your mutable array
NSString *stringValue = ... // your string

NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:mutableArray forKey:@"array"];
[archiver encodeObject:stringValue forKey:@"string"];
此时,
数据
包含两个对象。对数据执行所需操作(例如保存数据)

要取回您的对象,请执行以下操作:

NSData *data = ... // the archived data
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSMutableArray *mutableArray = [unarchiver decodeObjectForKey:@"array"];
NSString *stringValue = [unarchiver decodeObjectForKey:@"string"];

你能给我们看更多的代码吗?我只需要如何从可变数据访问数据。