在带有 Cocoa 的 Objective-C 中,通过使用键值编程 (KVP),无需显式循环即可完成许多任务。例如,我可以用一行代码找到数组中的最大数:
NSNumber * max = [numbers valueForKeyPath:@"@max.intValue"];
我怎样才能用 swift 做同样的事情?数组似乎不支持 valueForKeyPath 方法。
最佳答案
该数组实际上会响应 valueForKeyPath 函数 - 您只需将数组转换为 AnyObject
,这样编译器就不会报错。如下:
var max = (numbers as AnyObject).valueForKeyPath("@max.self") as Double
甚至,对于对象的联合:
(labels as AnyObject).valueForKeyPath("@unionOfObjects.text")
如果上面的 labels
是标签的集合,上面的代码将返回每个标签的 text
属性的所有字符串的数组。
它也等同于:
(labels as AnyObject).valueForKey("text")
...就像在 Objective-C 中一样:)
关于swift - 在 Swift 中使用键值编程 (KVP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24039891/