Мне нужно преобразовать объект NSDictionary
в NSData
, и я должен получить тот же NSDictionary
из объекта NSData
. Как мне это сделать?
Преобразование объекта NSDictionary в объект NSData и наоборот
Ответ 1
использовать NSKeyedArchiver
Преобразование NSDictionary в NSDatap >
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 из сохраненных NSDatap >
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 с первого дня.