JSON编码NSObject NOT struct?

时间:2017-09-26 18:13:05

标签: json swift nsobject

我有一个NSObject类

class InventPricing: NSObject {  
    var quantity:  NSNumber = NSNumber(value: 00.00)
    var cost:      NSNumber = NSNumber(value: 00.00)
    var total:     NSNumber = NSNumber(value: 00.00)
}

将其保存为数组

let prices = [InventPricing]()

尝试将数组编码为JSON字符串

 print("Insert Inv   List 1                \(prices)   ")
 let encoder = JSONEncoder()
 encoder.outputFormatting = .prettyPrinted
 let info = try! encoder.encode(prices)
 print("Insert Inv   List 1                \(info  )   ")
 let str  = String(data: info, encoding: .utf8)!
 print("Insert Inv   List 1                \(str   )   ")

在encoder.encode(价格)行上获取错误

致命错误:数组不符合Encodable,因为InventPricing不符合Encodable。:

我能找到的只是编码一个结构而不是一个NSObject类

请帮忙! 提前致谢

1 个答案:

答案 0 :(得分:1)

对于类和结构,该过程实际上是相同的,当前模式是使用结构数据模型,但是......

您只需遵守协议:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {
                    case 0:
                        image.setImageResource(R.drawable.item1);
                        break;
                    case 1:
                        image.setImageResource(R.drawable.item2);
                        break;
                    default:
                        //Default image
                        //image.setImageResource(R.drawable.item2);
                        break;

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

如果你想双向转换:

class InventPricing: NSObject, Encodable {  …

有关详细信息,请查看the documentation。它在所有示例中都使用了结构,但它从未说它只适用于结构并使用术语“类型”,它可以是结构或类。