I\'m having trouble using NSCoding
in Swift. I have attempted to implement the protocol but I get a crash whenever I call my save()
method. Xcode p
Here is another example with an object called SNStock
that has two string properties, ticker
and name
:
import Foundation
class SNStock: NSObject, NSCoding {
let ticker: NSString
let name: NSString
init(ticker: NSString, name: NSString) {
self.ticker = ticker
self.name = name
}
// MARK: NSCoding
required init(coder aDecoder: NSCoder) {
self.ticker = aDecoder.decodeObjectForKey("ticker") as! NSString
self.name = aDecoder.decodeObjectForKey("name") as! NSString
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(ticker, forKey: "ticker")
aCoder.encodeObject(name, forKey: "name")
}
// MARK: NSObjectProtocol
override func isEqual(object: AnyObject?) -> Bool {
if let object = object as? SNStock {
return self.ticker == object.ticker &&
self.name == object.name
} else {
return false
}
}
override var hash: Int {
return ticker.hashValue
}
}