5

上記のメッセージが引き続き表示されますが、クラスでこのコードを使用しようとしています。

    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 を返す前に初期化する必要があります

4

1 に答える 1

7

変数と呼び出しで機能させることができます(プロパティにアクセスする前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
        }
    }
}

ただし、定数を使用してバージョンに固執する場合は、それは私の快適ゾーンから外れているため、この回答が役立つ可能性があります。

于 2015-04-10T11:44:33.970 に答える