Я пытаюсь создать сериализатор, который изменит свойства объекта.Использование Reflection для изменения свойств в Swift
Пример:
class testobj{
var prop1:Int = 3
var prop2:String = "Hello"
var prop3:Dictionary<String,String> = Dictionary<String,String>()
}
Я знаю, что я могу получить доступ имена и типы свойств с помощью
reflect(testobjc())[0].1
и
var tester = testobj()
_std_lib_DemangledTypeName(tester.prop1)
, но то, что я хотел бы сделать что-то подобные
var tester = testobj()
for(var x:Int = 0; x < reflect(testobj()).count; x++){
if(_std_lib_DemangledTypeName(tester.(reflect(testobj())[0].1)) == "Swift.String"){
tester.(reflect(testobj())[0].1) = "World!"
}
}
По сути, я хочу перебрать все свойства, перечисленные для данного класса, и установить свойства для вновь созданного объекта этого класса. Любые рекомендации будут оценены. Быстрое отражение для меня нова.
Функция отражения Swift, по-видимому, только позволяет считывать свойства (по крайней мере, с бета-версии 7). Это сообщение: http://stackoverflow.com/questions/24245262/qa-call-a-method-from-a-string-in-swift в сочетании с методом setter может дать вам то, что вам нужно. –
@EranGloben Хорошая мысль. Это сработает, но мне нужно будет гарантировать, что для каждого свойства есть метод setter, и поскольку я не вижу никакого способа задуматься о быстрых методах, я не могу гарантировать, что .... идеи на этом фронте? Я чувствую, что мне просто не повезло. – steventnorris
Вы нашли здесь решение для этого? –