Swift NSCoding Not working

前端 未结 4 1719
小蘑菇
小蘑菇 2020-12-23 21:53

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

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-23 22:24

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

提交回复
热议问题