Пока все объекты в ваших массивах реализуют протокол NSCoding
, что делает большинство классов по умолчанию, вы должны иметь возможность сериализовать всю структуру массива, используя NSKeyedArchiver
.
Если архивирование / разархивирование непосредственно в / из файла, оно должно выглядеть примерно так:
NSString *filename = @"[filename]";
[NSKeyedArchiver archiveRootObject:paths toFile:filename];
paths = [NSKeyedUnarchiver unarchiveObjectWithFile:filename];
Если вы просто хотите получить необработанные данные, возможно, отправить их в NSUserDefaults или передать черезсети, это должно выглядеть примерно так:
NSData *binaryData = [NSKeyedArchiver archivedDataWithRootObject:paths];
paths = [NSKeyedUnarchiver unarchiveObjectWithData:binaryData];
Если у вас есть пользовательские классы в этих массивах, вам, возможно, придется реализовать NSCoder
самостоятельно, что утомительно, но не сложно.
Кроме того, вы можете быть осторожны с изменяемыми массивами и словарями.Кажется, я помню кое-что о том, что изменяемые объекты становятся неизменяемыми, когда они архивируются, поэтому вы можете проверить, прежде чем просто начать добавлять объекты.
Дополнительная информация:
Справочник по классам NSCoder
Руководство по программированию архивов и сериализаций