我在xcode 8.0/swift 3.0中收到一个Ambiguous use of 'children'
错误,当我试图向不透明的NSTreeController.arrangedObjects
对象发送消息时。
这里是一个光秃秃的操场,展示了用例:
import AppKit
extension NSTreeController {
func whatever () {
let k = (self.arrangedObjects as AnyObject).children // error here
}
}
我尝试使用
AnyObject
作为底层objc对象的桥梁,我想它应该能够通过任何方法调用。xcode表示它找到了两个可以响应“children”消息的候选者:
Foundation.XMLNode
和AppKit.NSTreeNode
。当然,明显的解决方案(强制转换为
NSTreeNode
)不起作用,因为arrangedObjects
返回不透明的代理对象,而不是真正的NSTreeNode
关于如何在Swift 3中使用
NSTreeController.arrangedObjects.children
有什么建议吗? 最佳答案
children
属性的两个候选项的类型不同:
Foundation.XMLNode:137:14: note: found this candidate
open var children: [XMLNode]? { get }
^
AppKit.NSTreeNode:12:14: note: found this candidate
open var children: [NSTreeNode]? { get }
^
可以通过强制转换属性的值来解决模糊性。
到所需的类型。在您的情况下:
let k = (self.arrangedObjects as AnyObject).children as [NSTreeNode]?
关于swift - “尝试在Swift 3.0中使用NSTreeController.arrangedObjects时,模糊地使用'children'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39660939/