Using key-value programming (KVP) with Swift

4 Solutions Collect From Internet About “Using key-value programming (KVP) with Swift”

The array will actually respond to valueForKeyPath function – you just need to cast the array to AnyObject so that the compiler doesn’t complain. As follows:

var max = (numbers as AnyObject).valueForKeyPath("@max.self") as Double

or even, for a union of objects:

(labels as AnyObject).valueForKeyPath("@unionOfObjects.text")

If labels above is a collection of labels, the above will return an array of all the strings of the text property of each label.

It is also equivalent to the following:

(labels as AnyObject).valueForKey("text")

… just as it is in Objective-C 🙂

You can still use (at least) the didSet willSet provided by Swift on properties. I guess it’s better than nothing.

You can also use the reduce function of Array

let numbers = [505,4,33,12,506,21,1,0,88]
let biggest = numbers.reduce(Int.min,{max($0, $1)})
println(biggest) // prints 506

Good explanation here

I’m not sure about KVP, but KVO isn’t currently supported in Swift. See also this dev forums thread:

https://devforums.apple.com/thread/227909