【发布时间】:2018-09-07 01:33:13
【问题描述】:
我正在尝试在 swift 4 中使用 Codable 解析 JSON。我担心的是
public class entStatusAndDescription : NSObject {
var status : Int?
var statusDescription : String?
var records : AnyObject?
}
我希望上述实体是可编码的,但“记录”不能是特定实体, 因为这是我将从 API 收到的基本实体。 在我解析完 status 和 statusDescription 之后,我才能指定将记录哪个实体
例如我正在调用 API 以获取客户详细信息,我收到状态为 200 即成功,然后我会将记录解析为客户实体
【问题讨论】:
-
您无法使用 Codable 解码
Any(Object)。至少您必须编写一个自定义初始化程序来确定具体类型。顺便说一句:在 Swift 中,大多数情况下你不需要继承自NSObject的类。为什么status是可选的? API 很可能总是发送此密钥。 -
是的,我知道它不会解码 Any(Object) 但是 1.我必须使用 JSONSerialization.jsonObject( with: data! , options: JSONSerialization.ReadingOptions.mutableContainers) 从接收到的数据中获取 json 作为! NSDictionary 2. 再次使用 JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) 对记录进行序列化 3. 最后decoder.decode([entCustomer].self, from: data) 获取特定实体的实际记录
-
我会查看状态是否为可选。感谢您的更正
标签: swift4 codable decodable encodable