Unrecognized selector sent to instance while archiving data (NSCoding)

前端 未结 5 1899
名媛妹妹
名媛妹妹 2020-12-09 09:48
-(void)transformObjects:(NSMutableArray*)array key:(NSString*)key
{
    NSMutableArray* archiveArray = [[NSMutableArray alloc]initWithCapacity:array.count];

    for         


        
5条回答
  •  感情败类
    2020-12-09 10:34

    You'll need to implement NSCoding - here is an 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
      }
    }
    

提交回复
热议问题