2014-09-10 17 views
5

Bir nesnenin özelliklerini değiştirecek bir seri hale getirici oluşturmaya çalışıyorum.Swift öğesinde değişiklik yapmak için Yansıma'yı kullanma

Örnek: Ben

reflect(testobjc())[0].1 

ve

var tester = testobj() 
_std_lib_DemangledTypeName(tester.prop1) 

ama ne yapmak istiyorsunuz şeydir kullanarak isim ve özelliklerinin türlerine erişebilirsiniz biliyor

class testobj{ 
    var prop1:Int = 3 
    var prop2:String = "Hello" 
    var prop3:Dictionary<String,String> = Dictionary<String,String>() 
} 

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!" 
    } 
} 

Esasen, belirli bir sınıf için listelenen tüm özellikler arasında geçiş yapmak ve bu sınıfın yeni oluşturulmuş bir nesnesindeki özellikleri ayarlamak istiyorum. Herhangi bir rehberlik takdir edilecektir. Hızlı yansıma benim için yeni.

+0

Swift'in yansıtma işlevi yalnızca okuma özelliklerine izin veriyor gibi görünüyor (en azından beta 7'den itibaren). Bu gönderi: http://stackoverflow.com/questions/24245262/qa-call-a-method-from-a-string-in-swift bir setter metodu ile birleştiğinde size ihtiyacınız olanı verebilir. –

+0

@EranGloben İyi düşünce. Bu işe yarayacaktı, ama her bir özellik için belirleyici bir yöntem olduğunu garanti etmem gerekiyordu ve yöntemleri hızlı bir şekilde yansıtmanın herhangi bir yolunu görmediğim için kendimi garanti edemem. bu cephedeki fikirler? Sadece şansımın dışında olabileceğimi hissediyorum. – steventnorris

+0

Bunun için bir çözüm buldunuz mu? –

cevap

İlgili konular