преобразование объекта NSDictionary в объект NSData и наоборот

Мне нужно преобразовать объект NSDictionary в объект NSData и далее я должен получить тот же NSDictionary из объекта NSData. Как мне это сделать?


person Ajayvictor007    schedule 01.07.2010    source источник


Ответы (2)


используйте NSKeyedArchiver

Чтобы преобразовать NSDictionary в NSData

NSMutableData *data = [[NSMutableData alloc]init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[archiver encodeObject:YOURDICTIONARY forKey: YOURDATAKEY];
archiver finishEncoding];
[data writeToFile:YOURFILEPATH atomically:YES];
[data release];
[archiver release];

Чтобы вернуть NSDictionary из сохраненного NSData

NSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
person Robert Redmond    schedule 01.07.2010

Гораздо более простая версия ответа Роберта:

[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH];

И соответственно:

YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH];

Или ответить на вопрос как изначально поставленный, не вменяя файл в вещи:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YOURDICTIONARY];
...
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Это все фабричные методы, так что это один и тот же код с ARC или без него; используемые методы были доступны с OS X v10.2 и на iOS с первого дня.

person Tommy    schedule 08.08.2014