2014-09-10 2 views
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!" 
    } 
} 

기본적으로 주어진 클래스에 대해 나열된 모든 속성을 반복하고 해당 클래스의 새로 만든 개체에 속성을 설정하려고합니다. 모든 지침을 부탁드립니다. 신속한 반성은 저에게 새로운 것입니다.

+0

스위프트의 반영 함수는 읽기 속성 (적어도 베타 7 이상) 만 허용하는 것으로 보입니다. 이 게시물 : setter 메서드와 결합 된 http://stackoverflow.com/questions/24245262/qa-call-a-method-from-a-string-in-swift는 필요한 것을 제공 할 수 있습니다. –

+0

@EranGloben 좋은 생각. 그게 효과가 있지만, 각 속성마다 세터 메소드가 있다는 보장이 필요합니다. 메소드를 신속하게 반영 할 방법이 없기 때문에, 나 자신을 보장 할 수는 없습니다 .... 그 정면에 대한 아이디어? 나는 운이 나빠질 수도 있습니다. – steventnorris

+0

여기에 해결책이 있습니까? –

답변

관련 문제