gpt4 book ai didi

swift - "Ambiguous use of ' 子级 '"尝试在 Swift 3.0 中使用 NSTreeController.arrangedObjects

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:59 25 4
gpt4 key购买 nike

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

这是一个展示用例的裸 Playground :

import AppKit

extension NSTreeController {

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

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

Xcode 表示它找到了两个可以响应“子级”消息的候选对象:Foundation.XMLNodeAppKit.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 - "Ambiguous use of ' 子级 '"尝试在 Swift 3.0 中使用 NSTreeController.arrangedObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com