【发布时间】:2019-05-12 13:33:25
【问题描述】:
我在尝试对对象进行编码时收到以下错误。
'NSInvalidArgumentException',原因:'JSON 写入中的类型无效 (__SwiftValue)'
这个对象的定义如下:-
public struct Item: Codable {
public var _id: Int
public var name: String
public var price: Float
public init(_id: Int, name: String, price: Float) {
self._id = _id
self.name = name
self.price = price
}
public enum CodingKeys: String, CodingKey {
case _id = "id"
case name
case price
}
}
我正在尝试通过以下方式对其进行编码:
public func createDictionaryRequestForAddingItems(item : Item)->Data{
let dictRequest = ["item":item];
let dataRequest = try! JSONSerialization.data(withJSONObject: dictRequest, options: []);
return dataRequest;
}
如果我直接使用 String 或 Int 之类的简单对象而不是 item 对象,则一切正常,但是当请求需要 Item 对象(即 IS-A Codable 实例)时,它会给出上面的错误。
JSONSerialization.isValidJSONObject(item) 总是给出 false,即使对于正确编码的请求也是如此。
【问题讨论】: