[英]private func: Missing argument for parameter #1 in call
好吧,这是另一个“调用中的参数#1缺少参数”问题。 (似乎苹果可以更好地命名其错误:-p)
在我的课堂上,我正在调用一个私有函数libraryVisibility()
,并且在那一行中,我在编译时的Missing argument for parameter #1 in call
错误中得到了Missing argument for parameter #1 in call
的Missing argument for parameter #1 in call
。 真的不明白为什么。
无论如何,这是代码:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var libraryState: Bool = libraryVisibility()
func applicationDidFinishLaunching(aNotification: NSNotification) {
…
}
private func libraryVisibility() -> Bool {
…
// dostuff and return boolean
return true
}
}
您可以使libraryVisibility()
函数成为class
函数:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var libraryState : Bool = AppDelegate.libraryVisibility()
private class func libraryVisibility() -> Bool {
let homeUrl = NSURL(string: NSHomeDirectory())
let libraryUrl = NSURL(string: "Library", relativeToURL: homeUrl)
return libraryUrl!.hidden
}
}
或者,您可以将libraryState
属性设置为lazy
属性:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
lazy var libraryState : Bool = self.libraryVisibility()
private func libraryVisibility() -> Bool {
let homeUrl = NSURL(string: NSHomeDirectory())
let libraryUrl = NSURL(string: "Library", relativeToURL: homeUrl)
return libraryUrl!.hidden
}
}
然后,该属性将在您首次使用时进行初始化。
好的,我已经解决了,但是不完全确定为什么这样做:
给libraryState
变量一个默认值,并在applicationDidFinishLaunching
内部设置它似乎可以解决问题:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var libraryState: Bool = false
func applicationDidFinishLaunching(aNotification: NSNotification) {
libraryState = libraryVisibility()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.