尝试在 Swift 3.0 中使用 NSTreeController.arrangedObjects 时出现“'children' 的使用不明确”

2023-12-15

我得到一个Ambiguous use of 'children'错误于XCode 8.0/Swift 3.0当尝试向不透明对象发送消息时NSTreeController.arrangedObjects目的。

这是一个展示用例的光秃秃的游乐场:

import AppKit

extension NSTreeController {

    func whatever () {
        let k = (self.arrangedObjects as AnyObject).children // error here
    }
}

我尝试使用AnyObject作为底层 ObjC 对象的桥梁,我猜它应该能够通过任何方法调用。

Xcode 表示它发现了两个可以响应“子”消息的候选者:Foundation.XMLNode and AppKit.NSTreeNode.

当然,显而易见的解决方案(转换为NSTreeNode)不工作,因为arrangedObjects返回一个不透明的代理对象,而不是真实的NSTreeNode

关于我们应该如何使用的任何建议NSTreeController.arrangedObjects.children在斯威夫特 3 中?


两位候选人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]?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在 Swift 3.0 中使用 NSTreeController.arrangedObjects 时出现“'children' 的使用不明确” 的相关文章

随机推荐