Я хочу сохранить пользовательский объект (содержащий массив пользовательского объекта, который снова содержит пользовательские объекты и несчетное количество свойств из стандартных массивов с целым числом и до 3-го байтового массива). Таким образом, сериализация всего и каким-то образом кодировать все это рекурсивно, чтобы преобразовать его в данные с NSKeyedArchiver, было бы такой огромной болью, не так ли легко, как я могу просто сохранить и загрузить мой основной объект в виде двоичного кода где-нибудь на hd?
Что-то вроде:
//save
NSData.makeBinaryStuffOutOf(myObject).saveIt(atSomeLocation)
//and
NSData.loadMyStuffAt(someLocation) as! myCustomClassThing
не так ли, как простой способ, когда я могу просто сохранить и загрузить мой основной объект в виде двоичного кода где-нибудь на hd?
Подумайте, как бы вы это сделали в C?
Если ваши данные находились в одном непрерывном блоке памяти и не содержали внутренних указателей, вы могли бы write(2)
/read(2)
блок памяти.
Однако если бы были внутренние указатели или задействованы несколько блоков памяти, тогда вам нужно было бы написать что-то, что могло бы кодировать/декодировать эту структуру в/из последовательности байтов...
и это будет немного работать, даже в C...
или вы могли бы использовать код, который еще кто-то написал...
как NSKeyedArchiver
Поэтому сериализация всего и каким-то образом кодировать все это рекурсивно, чтобы преобразовать его в данные с
NSKeyedArchiver
было бы такой огромной болью
Вопрос о классах архивирования заключается в том, что они обеспечивают всю инфраструктуру, вам просто нужно написать одну процедуру архива /unarchiver для каждого класса, и все это сразу же работает...
НТН