5
개체의 속성을 변경하는 serializer를 만들려고합니다.Reflection을 사용하여 Swift에서 속성 변경
예 : 나는
reflect(testobjc())[0].1
및
var tester = testobj()
_std_lib_DemangledTypeName(tester.prop1)
하지만 내가하고 싶은 것은 뭔가를 사용하여 이름과 속성의 유형에 액세스 할 수 있습니다 알고
class testobj{
var prop1:Int = 3
var prop2:String = "Hello"
var prop3:Dictionary<String,String> = Dictionary<String,String>()
}
like
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!"
}
}
기본적으로 주어진 클래스에 대해 나열된 모든 속성을 반복하고 해당 클래스의 새로 만든 개체에 속성을 설정하려고합니다. 모든 지침을 부탁드립니다. 신속한 반성은 저에게 새로운 것입니다.
스위프트의 반영 함수는 읽기 속성 (적어도 베타 7 이상) 만 허용하는 것으로 보입니다. 이 게시물 : setter 메서드와 결합 된 http://stackoverflow.com/questions/24245262/qa-call-a-method-from-a-string-in-swift는 필요한 것을 제공 할 수 있습니다. –
@EranGloben 좋은 생각. 그게 효과가 있지만, 각 속성마다 세터 메소드가 있다는 보장이 필요합니다. 메소드를 신속하게 반영 할 방법이 없기 때문에, 나 자신을 보장 할 수는 없습니다 .... 그 정면에 대한 아이디어? 나는 운이 나빠질 수도 있습니다. – steventnorris
여기에 해결책이 있습니까? –