2016-06-29 96 views
0

我在學習NSUserDefaults,我有一個實例化名和姓的人。NSUserDefaults初始化程序

class Person: NSObject, NSCoding { 
    var firstName: String! 
    var lastName: String! 

    init(first:String, last:String) { 
     firstName = first 
     lastName = last 
    } 

    override init() { 

    } 

    required convenience init?(coder aDecoder: NSCoder) { 
     self.init() 
     self.firstName = aDecoder.decodeObjectForKey("firstName") as? String 
     self.lastName = aDecoder.decodeObjectForKey("lastName") as? String 
    } 

    func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encodeObject(self.firstName, forKey: "firstName") 
     aCoder.encodeObject(self.lastName, forKey: "lastName") 
    } 
} 

我想知道爲什麼我必須重寫我的初始化初始化初始化名稱與空初始化的第一個初始化?

此外,究竟什麼是「必需的便利」初始值設定項?

謝謝

+1

請閱讀[斯威夫特編程語言指南(https://developer.apple.com/library /ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html)。 –

+0

http://www.codingexplorer.com/designated-initializers-convenience-initializers-swift/ –

回答

0

你需要調用NSObject的初始值設定在自定義初始化:

init(first:String, last:String) { 
    firstName = first 
    lastName = last 

    super.init() 
}