我使用拆分视图控制器作为初始视图控制器开始我的项目,并从故事板自动启动它.
一般地,通过该用户界面的应用程序有一个且只有一个拆分视图控制器作为根,所以我创建一个静态变量在子类,并将其设置初始化已完成时.
所以我想用swift试试这个行为.
我在iBook上阅读了关于Type属性(带有static和class关键字)的Swift编程语言指南,并尝试了一段代码:
import UIKit
class SplitViewController: UISplitViewController {
class func sharedInstance() -> SplitViewController {
return SplitViewController.instance
}
class let instance: SplitViewController = nil
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
self.initialization()
}
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder);
self.initialization()
}
func initialization() {
SplitViewController.instance = self;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当Xcode说不支持类型属性的class关键字时,我想通了.

你有解决方案吗?
我试图root在函数中使用属性作为默认参数,add如下所示,它给了我一个错误:
无法使用实例成员“root”作为默认参数。
但是,当我root在嵌套函数中使用时search,它工作正常。
class Trie {
var root = TrieNode()
func add(value: String, node: TrieNode? = root) { // error
var myNode = node
if myNode == nil {
myNode = root
}
if value.count == 0 {
node?.setEnd()
return
} else if myNode!.keys[String(value.first!)] == nil {
myNode!.keys[String(value.first!)] = TrieNode()
return add(value: String(value.dropFirst()), node: myNode!.keys[String(value.first!)])
} else {
return add(value: String(value.dropFirst()), node: myNode!.keys[String(value.first!)])
}
}
func allWords() -> [String] {
var words …Run Code Online (Sandbox Code Playgroud)