我有一个自定义的NSView类,看起来像:提供自定义的NSView一个指定初始化斯威夫特
class MyClass: NSView
{
var myClassVar: NSColor
}
当然,Xcode是说我的类没有初始化,所以我需要重写指定初始化所以我可以初始化myClassVar。
我该怎么做?
我有一个自定义的NSView类,看起来像:提供自定义的NSView一个指定初始化斯威夫特
class MyClass: NSView
{
var myClassVar: NSColor
}
当然,Xcode是说我的类没有初始化,所以我需要重写指定初始化所以我可以初始化myClassVar。
我该怎么做?
试试这个;
class MyClass: NSView
{
var myClassVar: NSColor! // the optional mark ! to be noticed.
override init(frame frameRect: NSRect) {
super.init(frame:frameRect);
}
required init(coder: NSCoder) {
super.init(coder: coder)
}
//or customized constructor/ init
init(frame frameRect: NSRect, otherInfo:Int) {
super.init(frame:frameRect);
// other code
}
}
如果你给你的颜色一个默认值,那么NSView的初始值设定项仍然可以工作。
以下几种方法可以做到这一点:
var myClassVar: NSColor?
var myClassVar: NSColor! // make sure to set this before you actually access it
var myClassVar: NSColor = NSColor.clearColor()
第二个例子(隐含解开可选)是苹果公司确实有IBOutlets。否则,您需要有一个初始化程序,它将您的每个变量设置为init方法中的非空值。
有关它的更多信息,请参阅Swift Initialization and the Pain of Optionals,其中讨论了这些解决方案:
NSColor?
),super.initNSColor!
)