#objective-c #cocoa #macos #property-list
#objective-c #cocoa #macos #список свойств
Вопрос:
Я хотел бы закодировать, NSEvent
используя NSPropertyListSerialization
, но NSPropertyListSerialization принимает только объекты NSData, NSString, NSArray, NSDictionary, NSDate и NSNumber.
Есть ли рекомендуемый способ преобразовать NSEvent в NSDictionary с поддержкой NSPropertyListSerialization (и восстановить NSEvent из такого NSDictionary)?
Комментарии:
1. С какой стати вы пытаетесь сериализовать
NSEvent
?2. Я хотел бы записывать взаимодействия с приложением и иметь возможность позже воспроизвести эти взаимодействия для управления приложением.
Ответ №1:
В этой ситуации вам нужно самостоятельно обрабатывать сохранение и восстановление объекта. Или, скорее, части интересующего вас объекта, либо поместив каждое значение в NSDictionary, либо сохранив их отдельно и используя значения для создания нового объекта при декодировании вашего класса.
Эта ситуация немного странная, поскольку обычно вы не создаете и не сохраняете объекты NSEvent. Если вы делаете что-то вроде сохранения координаты последнего касания, рассмотрите возможность использования CGPoint вместо этого. Вы не только уменьшите объем занимаемой памяти на небольшую величину, но и сможете использовать значение NSValue для сериализации точки.
Комментарии:
1. Спасибо. Однако я хотел бы сохранить различные типы NSEvent, чтобы одни только координаты не представляли все необходимые данные для построения нового NSEvent.
2. да, вам придется свернуть свою собственную реализацию, сохранить то, что вас интересует.