JSONModel 不适用于 Swift 数组

标签 json swift jsonmodel

我在 Swift 中使用 JSONModel 时遇到了一些问题。

我正在尝试创建一个 ToDo 列表应用程序,该应用程序将保留项目集合,以便在应用程序关闭时保留 ToDo 项目。这是我使用的代码:

class ToDoItem: JSONModel {
    var name: String = ""
    var isCompleted: Bool = false
    var createdOn: NSDate = NSDate()
}

class ToDoList: JSONModel {
    var items: [ToDoItem] = []
}

我可以通过调用 toJSONString()ToDoItem 转换为 JSON,但同样的方法不适用于 ToDoList,它返回 nil .知道为什么会这样吗?

最佳答案

由于与 Obj-C 运行时支持的反射不兼容,JSONModel 不支持 Swift。 JSONModel 当前需要这种反射能力才能正确解析类型。 We are looking into alternative methods of defining the type mappings though.

具体来说,JSONModel 依赖于使用协议(protocol)来确定集合类型中项目的类型,例如字典、数组等。在 Swift 中定义的协议(protocol)在运行时是不可见的——阻止 JSONModel 正确反序列化集合类型。

目前,您有两个选择:

  1. 从 JSONModel 切换到另一个支持 Swift 的 JSON(反)序列化库
  2. 在 Objective-C 中定义您的模型

我知道这并不理想,但我担心当前的 JSONModel 行为无法解决。

关于JSONModel 不适用于 Swift 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742628/

相关文章:

ios - 在 iOS 应用上显示计算错误时出错

ios - 使用 Swift 解析来自 Firebase Cloud Function 的 FIRHTTPSCallableResult 对象数据

objective-c - 使用 Objective-C JSONModel 并以对象数组作为入口点

javascript - 图像->JSON->.Net 图像

javascript - 使用静态 JSON 数据的整洁解决方案

ios - 完成 block 处理空数组

ios - 尝试使用 JSONModel : Invalid type in JSON write (. 序列化后出错 ..)

javascript - 分隔文本到嵌套 javascript 对象/JSON

python - 如何在不重写 JSON 对象的其余部分的情况下就地编辑 JSON 元素?

objective-c - 如何使用 AnyClass 对象中定义的类型在 Swift 中声明变量?