2015-04-10 5 views
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 
    } 
} 

इसे ठीक कैसे करते हैं तो मैं इस त्रुटि नहीं मिलता है:

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

उत्तर

7

आप इसे चर के साथ काम कर सकते हैं और (उसके गुण एक्सेस करने से पहले self बनाने के लिए) super.init() के लिए एक कॉल:

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 मदद की जा सकती है।

+0

'super.init()' मुद्दा था - thx! –

संबंधित मुद्दे