swift – 必须初始化类实例的所有存储属性,然后才能从初始化程序返回nil

swift – 必须初始化类实例的所有存储属性,然后才能从初始化程序返回nil,第1张

概述我正在尝试在类中使用此代码,但我继续获取上述消息. let filePath: NSString! let _fileHandle: NSFileHandle! let _totalFileLength: CUnsignedLongLong!init?(filePath: String){ if let fileHandle = NSFileHandle(f 我正在尝试在类中使用此代码,但我继续获取上述消息.

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全部内容,希望文章能够帮你解决swift – 必须初始化类实例的所有存储属性,然后才能从初始化程序返回nil所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1007893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存