Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

использовать NSKeyedArchiver

Преобразование NSDictionary в NSData​​p >

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​​p >

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

Ответ 2

Более простая версия ответа Роберта:

[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH];

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

YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH];

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

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

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