spogatetz
spogatetz

Reputation: 11

Using a string parameter to describe class property

I want to write a function that takes a string and then prints the value of the class property with that name. In practice, there would be more than one property to choose form. For example...

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
}

Obviously, I can't do this code but I know there has to be a better solution than just I series of if statements.

Upvotes: 0

Views: 109

Answers (1)

LinShiwei
LinShiwei

Reputation: 1062

Apple has done this for you. It is known as key-value observing(KVO). Try the following code in the playground:

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

Your own class can support KVO by inheriting from NSObject:

class YourClass: NSObject{ ... }

Upvotes: 1

Related Questions