2015-04-10 4 views
5

Ich versuche, diesen Code in einer Klasse zu verwenden, obwohl ich weiterhin die obige Nachricht erhalte.Alle gespeicherten Eigenschaften einer Klasseninstanz müssen initialisiert werden, bevor nil von einem Initialisierer zurückgegeben wird

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

Wie dies behebe, damit ich nicht diesen Fehler:

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

Antwort

7

Sie können es mit Variablen und einen Aufruf an super.init() machen arbeiten (self Erstellung vor dessen Eigenschaften zugreifen):

Aber wenn Sie planen, Ihre Version mit Konstanten zu bleiben, dann ist es außerhalb meiner Komfortzone, und vielleicht this answer könnte hilfreich sein.

+0

Die 'super.init()' war das Problem - thx! –

Verwandte Themen