Сохранение пользовательских объектов в Swift & Cocoa

-2

Я хочу сохранить пользовательский объект (содержащий массив пользовательского объекта, который снова содержит пользовательские объекты и несчетное количество свойств из стандартных массивов с целым числом и до 3-го байтового массива). Таким образом, сериализация всего и каким-то образом кодировать все это рекурсивно, чтобы преобразовать его в данные с NSKeyedArchiver, было бы такой огромной болью, не так ли легко, как я могу просто сохранить и загрузить мой основной объект в виде двоичного кода где-нибудь на hd?

Что-то вроде:

//save
NSData.makeBinaryStuffOutOf(myObject).saveIt(atSomeLocation) 
//and 
NSData.loadMyStuffAt(someLocation) as! myCustomClassThing
Теги:
macos
cocoa

1 ответ

1
Лучший ответ

не так ли, как простой способ, когда я могу просто сохранить и загрузить мой основной объект в виде двоичного кода где-нибудь на hd?

Подумайте, как бы вы это сделали в C?

Если ваши данные находились в одном непрерывном блоке памяти и не содержали внутренних указателей, вы могли бы write(2)/read(2) блок памяти.

Однако если бы были внутренние указатели или задействованы несколько блоков памяти, тогда вам нужно было бы написать что-то, что могло бы кодировать/декодировать эту структуру в/из последовательности байтов...

и это будет немного работать, даже в C...

или вы могли бы использовать код, который еще кто-то написал...

как NSKeyedArchiver

Поэтому сериализация всего и каким-то образом кодировать все это рекурсивно, чтобы преобразовать его в данные с NSKeyedArchiver было бы такой огромной болью

Вопрос о классах архивирования заключается в том, что они обеспечивают всю инфраструктуру, вам просто нужно написать одну процедуру архива /unarchiver для каждого класса, и все это сразу же работает...

НТН

Ещё вопросы

Сообщество Overcoder
Наверх
Меню