JSON编码NSObject NOT结构?
我有一个NSObject类JSON编码NSObject NOT结构?
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]()
试图编码阵列上encoder.encode 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 ) ")
得到错误(价格)行
致命错误:Array not confo RM到可编码,因为InventPricing不符合可编码:
所有我能找到的是编码结构不是NSObject类
请帮帮忙! 在此先感谢
的过程实际上是类和结构相同,目前的格局是使用结构为,虽然数据模型......
你只需要符合协议:
class InventPricing: NSObject, Encodable { …
如果你想两者兼得转换:
class InventPricing: NSObject, Codable { …
欲了解更多信息请查看the documentation。它在所有的例子中都使用了结构,但是它从来没有说过它只能在结构上起作用,并且使用可以是结构或类的术语“类型”。
谢谢我做了文档显示现在我得到无法将类型'Foundation.JSONEncoder'(0x101863830)的值转换为'Swift.Encoder'(0x109711298)。 2017-09-26 15:13:10.188008-0400 EEDS4 [7129:3964368]无法将类型'Foundation.JSONEncoder'(0x101863830)的值转换为'Swift.Encoder'(0x109711298)。 – NewDev
@NewDev你的新代码是什么样的? –
使用这个扩展到NSObject
到[String: Any]
//NSObject convert in to [String: Any]
extension NSObject {
@objc func toDict() -> [String: Any] {
var dict: [String: Any] = [:]
for chiled in Mirror(reflecting: self).children {
dict[chiled.label!] = chiled.value
}
return dict
}
}
NSObject的转换为[字符串:任何] - yourObject.toDict()
// [String: Any] to Data
do {
let jsonData = try JSONSerialization.data(withJSONObject: prices.toDict() , options: [.prettyPrinted])
} catch let error {
print("json serialization error: \(error)")
}
尝试这个【答案】(HTTPS: //*.com/a/47531466/6822622)。 [NSObject]传达到字符串或数据 – AshvinGudaliya