我正在尝试按照本教程: http://www.raywenderlich.com/17811/how-to-make-a-simple-mac-app-on-os-x-10-7-tutorial-part-13
但是在Swift中这样做。
尝试创建主视图控制器步骤我有以下代码:
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var window: NSWindow
@IBOutlet var vc: MasterViewController?
func applicationDidFinishLaunching(aNotification: NSNotification?) {
vc = MasterViewController(nibName: "MasterViewController", bundle: nil)
}
func applicationWillTerminate(aNotification: NSNotification?) {
// Insert code here to tear down your application
}
}
然而,在MasterViewController实例化中,我收到错误: 找不到' __转换的重载'接受提供的参数
我做错了什么?
答案 0 :(得分:0)
我认为这是一个错误,因为文档说bundle可以是nil但是很快就不允许,抛出错误。
但是你可以将NSBundle.mainBundle()作为bundle传递它并且它可以工作。
引自NSViewController文档:
要在其中搜索nib文件的包。如果指定nil,则此方法在主包中查找nib文件。
答案 1 :(得分:0)
这是由于xcode自动生成Swift初始化程序的错误。
由于bundle可以是nil,因此NSViewController的init的正确签名是:
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)
但是,当你创建一个新的NSViewController子类时,xcode会为你创建一个init方法,并给它这个签名:
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle)
注意失踪?在NSBundle之后。这意味着您无法指定nil NSBundle。
幸运的是,这只是代码自动生成器中的一个错误。您可以将NSBundle更改为NSBundle吗?或者你可以删除init方法,如果你不使用它。