' NSRectEdge'在这种情况下,类型查找是不明确的

时间:2014-08-13 11:01:30

标签: xcode cocoa swift

我有一个自定义视图控制器,可以从XIB加载对象,其中一个是NSPopover

我在视图控制器上有一个基本上传递给popover的方法,如下所示:

func showRelativeToRect(positioningRect: NSRect, ofView positioningView: NSView!, preferredEdge: NSRectEdge) {
    self.popover.showRelativeToRect(positioningRect, ofView: positioningView, preferredEdge: preferredEdge)
}

但是,这会导致编译错误,我不太明白:

/Users/Craig/projects/.../EditItemPopoverController.swift:23:102: 'NSRectEdge' is ambiguous for type lookup in this context

这似乎是由NSRectEdge的可用类型冲突引起的,这可以通过自动填充来证实:

enter image description here

如何我可以告诉Swift我想使用特定类型吗?潜入NSPopover.swift课程,似乎正在使用版本:

typealias NSRectEdge = Int

但我不知道如何告诉Swift编译器,在我的视图控制器中,这个是我想要使用的类型。我可以通过定义采用Int代替NSRectEdge的方法来解决此问题,但我想使用与popover相同的方法签名。

2 个答案:

答案 0 :(得分:1)

我尝试使用以下代码编译测试项目:

typealias NSRectEdge = Int

在文件的顶部,它工作 - 也许只是重新声明它的工作原理。但是,这并没有在任何地方记录。

我觉得c#中应该有一个单独的命令,例如using,但那还没有。

答案 1 :(得分:0)

这似乎已在最新的测试版中得到解决。 (或者也许是Beta 6.我所知道的是它在Beta 7中正常运行。)