swift - 在 Swift 中使用键值编程 (KVP)

标签 swift

在带有 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/

相关文章:

ios - Swift 日期相当于 30 纳秒以下

ios - AudioKit 5 和 Xcode 12 beta 6 构建错误

ios - 如何在 iOS Swift 中可靠地获取键盘高度?

swift - SCNText 对齐在 iOS 中不起作用

ios - 单击 UISearchBar 时如何用表格 View 替换屏幕上的内容

swift - oauth2 身份验证在 iPhone 中不起作用

function - 键盘功能有问题?

objective-c - Xcode Playground 框架导入

ios - PFQueryTableViewController 无限滚动 swift

ios - 与服务器自动同步 Realm