Как получить доступ к объектам из NSMutableData

У меня есть NSMutableArray и NSString. Эти два архивируются в NSData и добавляются в объект NSMutableData.

Как я могу получить доступ к каждому данным из объекта NSMutableData.

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

person Vineesh TP    schedule 13.05.2013    source источник
comment
Можете ли вы показать нам больше кода?   -  person Rivers    schedule 13.05.2013
comment
Мне просто нужно, как получить доступ к данным из mutableData.   -  person Vineesh TP    schedule 13.05.2013


Ответы (2)


Вы не можете сделать это так, как вы показываете. Если вы добавите два объекта 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"];

На данный момент data содержит два объекта. Делайте с данными то, что вам нужно (например, сохраните их).

Чтобы вернуть свои объекты:

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

Согласно документам, «archivedDataWithRootObject: возвращает объект NSData, содержащий закодированную форму графа объектов, для которого задан корневой объект». Таким образом, ваш объект mutableData содержит 2 таких графа закодированных объектов. Вопрос в том, какие данные вы хотите прочитать из mutableData. Наверное, нет особого смысла читать просто все байты с [mutableData bytes] или часть с getBytes:length: или getBytes:range:.

person Reinhard Männer    schedule 13.05.2013