如果我像这样设置一个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
...但是我无法在该方法中设置字符串 - 字符串值仅在我自己的初始化程序中可用,实际上已经设置了。
我是否遗漏了一些关于它应该如何工作的东西,或者这是一个错误?我能想到的唯一可行的解决方案是使属性可选。
感谢您提供任何帮助。
答案 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