Если вы добавите print("bad key: \(key)")
к функции setValue(_ value: Any?, forUndefinedKey key: String)
, вы увидите, что tag_name
- неопределенный ключ.
Проблема в том, что для всех этих функций кодирования значения ключа NSObject
требуется совместимость с Objective-C. Поэтому любое свойство в вашем классе, с которым вы хотите работать с кодированием значения ключа, как это, должно быть помечено @objc
.
Изменение:
var tag_name : String = ""
до:
@objc var tag_name : String = ""
И код:
let test : [String : NSObject] = ["tag_name" : "mytest" as NSString]
let group = AnchorGroup(dict: test)
print(group.tag_name)
дает ожидаемые результаты.
Обновите ваши другие свойства по мере необходимости.