从文档中编码/解码对象时出现此错误

问题描述

错误消息: ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'***-[NSArray count]:发送给未初始化的不可变数组对象的方法'

断点位于“ self.foodSource =解码器.decodeObject(forKey:“ foodSource”)as [[TSOrderGroupMenusModel]“行上

   public func encode(with coder: NSCoder) {

    coder.encode(self.type,forKey: "type")
    coder.encode(self.name,forKey: "name")
    coder.encode(self.number,forKey: "number")
    coder.encode(self.item_id,forKey: "item_id")
    coder.encode(self.tries,forKey: "tries")
    coder.encode(self.soldout,forKey: "soldout")
    coder.encode(self.minimum,forKey: "minimum")
    coder.encode(self.maximum,forKey: "maximum")
    coder.encode(self.myDes,forKey: "myDes")
    coder.encode(self.parent_id,forKey: "parent_id")
    coder.encode(self.photo,forKey: "photo")
    coder.encode(self.price,forKey: "price")
    coder.encode(self.hideMinusPop,forKey: "hideMinusPop")
    coder.encode(self.isAdded,forKey: "isAdded")
    coder.encode(self.children,forKey: "children")
    coder.encode(self.foodSource,forKey: "foodSource")
    coder.encode(_priceDecimalNumber,forKey: "_priceDecimalNumber")
    coder.encode(_photoURLString,forKey: "_photoURLString")
    coder.encode(_isPopular,forKey: "_isPopular")
    coder.encode(self.selectedNumber,forKey: "selectedNumber")
    coder.encode(self.additionalIsSelected,forKey: "additionalIsSelected")
    coder.encode(_additionalIsRadio,forKey: "_additionalIsRadio")
    coder.encode(_isCanSelected,forKey: "_isCanSelected")


}

required init(coder decoder: NSCoder)
 {

    super.init()
    self.type = decoder.decodeObject(forKey: "type") as? Int
    self.name = decoder.decodeObject(forKey: "name") as? String
    self.number = decoder.decodeObject(forKey: "number") as? Int ?? 0
    self.item_id = decoder.decodeObject(forKey: "item_id") as? Int
    self.tries = decoder.decodeObject(forKey: "tries") as? Int
    self.soldout = decoder.decodeObject(forKey: "soldout") as? Bool
    self.minimum = decoder.decodeObject(forKey: "minimum") as? Int ?? -1
    self.maximum = decoder.decodeObject(forKey: "maximum") as? Int ?? -2
    self.myDes = decoder.decodeObject(forKey: "myDes") as? String
    self.parent_id = decoder.decodeObject(forKey: "parent_id") as? Int
    self.photo = decoder.decodeObject(forKey: "photo") as? String
    self.price = decoder.decodeObject(forKey: "price") as? String
    self.hideMinusPop = (decoder.decodeObject(forKey: "hideMinusPop") != nil)
    self.isAdded = (decoder.decodeObject(forKey: "isAdded") != nil)
    self.children = decoder.decodeObject(forKey: "children") as? [TSOrderMealMenusModel]


    
    self._priceDecimalNumber = decoder.decodeObject(forKey: "_priceDecimalNumber") as? NSDecimalNumber
    self._photoURLString = decoder.decodeObject(forKey: "_photoURLString") as? String
    self._isPopular = decoder.decodeObject(forKey: "_isPopular") as? Bool
    self.selectedNumber = decoder.decodeObject(forKey: "selectedNumber") as? Int ?? 0
    self.additionalIsSelected = decoder.decodeObject(forKey: "additionalIsSelected") as? Bool

    self._additionalIsRadio = decoder.decodeObject(forKey: "_additionalIsRadio") as? Bool
    self._isCanSelected = decoder.decodeObject(forKey: "_isCanSelected") as? Bool
self.foodSource = decoder.decodeObject(forKey: "foodSource") as? [TSOrderGroupMenusModel]
    
 }

食物来源声明如下:

public var foodSource: [TSOrderGroupMenusModel]? = [] 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...