如何使用非可选属性子类化UITableViewController

时间:2014-10-02 19:44:48

标签: ios swift

如果我像这样设置一个UITableViewController:

class FolderTableViewController: UITableViewController {

    var rootFolder:String

    init(path:String) {

        rootFolder = path        
        super.init(style: .Plain)

    }
}

然后我收到运行时错误:fatal error: use of unimplemented initializer 'init(nibName:bundle:)'

如果我添加了初始值设定项init(nibName:bundle:),那么我会收到编译时错误property 'self.rootFolder' not initialized at super.init call

...但是我无法在该方法中设置字符串 - 字符串值仅在我自己的初始化程序中可用,实际上已经设置了。

我是否遗漏了一些关于它应该如何工作的东西,或者这是一个错误?我能想到的唯一可行的解​​决方案是使属性可选。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您想快速摆脱错误,可以这样做:

var rootFolder:String = ""

但是如果你想完全理解为什么会出现这个错误,那么你应该阅读Swift文档的这一部分: https://developer.apple.com/library/prerelease/iOS/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html

以下是Ash Furrow在Swift Initializers上的精彩文章: http://ashfurrow.com/blog/swift-initializers