【发布时间】:2019-07-08 07:27:44
【问题描述】:
我正在尝试获取类中 IBOutlet 的选定属性的键路径。但是得到:
Type 'UIButton?' has no member 'isSelected'
直接访问 UIButton.isSelected 键路径有效,但不能满足我的用例。
@objc class Demo: UIViewController{
@IBOutlet @objc dynamic weak var button: UIButton!
}
var demo = Demo()
print(#keyPath(UIButton.isSelected)) // no error
print(#keyPath(Demo.button.isSelected)) // error
print(#keyPath(demo.button.isSelected)) // error
我错过了什么?
【问题讨论】:
-
您不需要使用键路径来访问对象实例上的属性。只需
print(demo.button.isSelected) -
这只是一个激进的简化示例。我正在尝试在 KVO 的上下文中使用它,但在示例中不需要这样做。
-
好的。答案是一样的——你将 keypath 与对象一起使用,而不是与实例一起使用。您只需将属性与实例一起使用。您还可以将对象键路径与 addObserver 一起使用,指定要在其上观察键路径的实例
标签: ios swift keypaths swift-keypath