gpt4 book ai didi

swift - 在从初始化程序返回 nil 之前,必须初始化类实例的所有存储属性

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:09 25 4
gpt4 key购买 nike

尽管我不断收到上述消息,但我正在尝试在类里面使用此代码。

    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
}
}

如何解决这个问题,这样我就不会收到这个错误:

All stored properties of a class instance must be initialized before returning nil from an initializer

最佳答案

您可以使用变量和调用 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可能会有帮助。

关于swift - 在从初始化程序返回 nil 之前,必须初始化类实例的所有存储属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29553357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com