Get “does not implement methodSignatureForSelector” when try to store Array in NSUserDefaults,Swift?

后端 未结 4 621
死守一世寂寞
死守一世寂寞 2020-12-24 12:53

I try to store Array of objects in NSUserDefaults.

I have following snippets of code:

    var accounts = MyAccounts()
    var array:Arra         


        
4条回答
  •  爱一瞬间的悲伤
    2020-12-24 13:07

    I was getting this exception in Swift 3.0. In my case, my model class was not inherit from NSObject base class. just inherit my class from NSObject base class and implements NSCoding protocol (if your container array has custom objects)

      class Stock: NSObject, NSCoding {
    
          var stockName: String?
    
          override init() {
          }
    
          //MARK: NSCoding protocol methods
          func encode(with aCoder: NSCoder){
              aCoder.encode(self.stockName, forKey: "name")
          }
    
          required init(coder decoder: NSCoder) {
    
              if let name = decoder.decodeObject(forKey: "name") as? String{
                   self.stockName = name
              }
          }
    
          func getStockDataFromDict(stockDict stockDict:[String:AnyObject]) -> Stock {
    
               if let  stockName = stockDict["name"] {
                    self.stockName = stockName as? String
               }
    
               return self
           }
       }
    

提交回复
热议问题