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