2017-03-07 3 views
0

문자열을 사용하여 해당 이름의 클래스 속성 값을 인쇄하는 함수를 작성하고 싶습니다. 실제로 양식을 선택하는 데는 하나 이상의 속성이 있습니다. 예를 들어 ...문자열 매개 변수를 사용하여 클래스 속성 설명

class Apple{ 
    var juiciness : Int = 0 
    init(juiciness: Int){ 
    self.juiciness = juiciness 
    } 
} 

var myApple(juiciness : 10) 

func printValue(property : String){ 
    print(Apple.property) // <-- I want to use the string to choose a property 
} 

물론,이 코드를 할 수 없어하지만 난 if 문 단지 I 시리즈보다 더 나은 솔루션이 있어야한다 알고있다.

+0

http://stackoverflow.com/questions/24138705/access-properties-via :

let label = UILabel() print(label.value(forKey: "font")) 

당신의 자신의 클래스가 NSObject를 상속으로 KVO를 지원할 수 -subscripting-in-swift – chengsam

+0

* 정말로 * 문자열을 가져 가고 싶습니까? 이것은 클로저로 훨씬 더 잘 구현 될 것입니다. – Hamish

+0

나중에 참조 할 수 있도록 이러한 종류의 기능을 "반사"라고합니다. – Alexander

답변

1

Apple에서이 작업을 수행했습니다. 이것은 키 - 값 관측 (KVO)으로 알려져 있습니다. 놀이터에서 다음 코드를보십시오 :

class YourClass: NSObject{ ... } 
+0

NSObject에서 NSManagedObject로 상속받을 수 있습니까? – spogatetz

+1

@spogatetz NSManagedObject는 NSObject의 하위 클래스입니다. NSManagedObject에서 상속받을 수 있습니다. – LinShiwei

+0

감사합니다. 고마워요. – spogatetz

관련 문제