我试图在一个类中使用这段代码,尽管我一直在获取上面的消息。
let filePath: NSString!
let _fileHandle: NSFileHandle!
let _totalFileLength: CUnsignedLongLong!
init?(filePath: String)
{
if let fileHandle = NSFileHandle(forReadingAtPath: filePath)
{
self.filePath = filePath
self._fileHandle = NSFileHandle(forReadingAtPath: filePath)
self._totalFileLength = self._fileHandle.seekToEndOfFile()
}
else
{
return nil //The error is on this line
}
}如何解决这个问题,这样我就不会得到这个错误:
在从初始化器返回nil之前,必须初始化类实例的所有存储属性。
发布于 2015-04-10 11:44:33
您可以让它使用变量和对super.init()的调用(用于在访问其属性之前创建self ):
class Test: NSObject {
var filePath: NSString!
var _fileHandle: NSFileHandle!
var _totalFileLength: CUnsignedLongLong!
init?(filePath: String) {
super.init()
if let fileHandle = NSFileHandle(forReadingAtPath: filePath)
{
self.filePath = filePath
self._fileHandle = NSFileHandle(forReadingAtPath: filePath)
self._totalFileLength = self._fileHandle.seekToEndOfFile()
}
else
{
return nil
}
}
}但是,如果您计划使用常量来坚持您的版本,那么它就超出了我的舒适范围,也许this answer会有所帮助。
https://stackoverflow.com/questions/29553357
复制相似问题