【问题标题】:Realm Object empty when converting using EVReflection使用 EVReflection 转换时领域对象为空
【发布时间】:2017-09-11 13:39:19
【问题描述】:

将 Realm 对象转换为 jsonString 时遇到问题。我在网上搜索,但找不到明确的答案。我猜可能是什么问题...

我有一个用户类:

import RealmSwift
import EVReflection

public class User: Object, EVReflectable, IModel {
    dynamic var id: String = UUID().uuidString

    dynamic var createdAt: String = ""
    dynamic var lastUpdate: String = ""

    dynamic var firstName: String = ""
    dynamic var lastName: String = ""

    dynamic var email: String = ""
}

当我尝试从我的领域数据库中加载用户时:

let users = realm.objects(User.self).filter("id = %@", userId)
let user = users.first

我可以毫无问题地访问该对象。我看到了存储在对象中的所有数据。

如果我想将数据转换为 JSON 字符串并输出,我会得到一个空的 JSON 对象:

print(user.toJsonString())

./输出

{
   "id":"64EA49AA-333C-4C76-B92C-464EFE1D9E10",
   "createdAt":"",
   "lastUpdate":"",
   "firstName":"",
   "lastName":"",
   "email":""
}

这是一个错误还是与领域相关的行为。因为我能找到解释这种行为的唯一解释是这个问题:Github Realm Issue

如果这是由 Realm 引起的,有没有人可以解决这个问题?

【问题讨论】:

  • 您确定user 确实设置了这些值吗?
  • @DávidPásztor 是的,当我打印出不同的属性(如 `print(user.firtName))时,我得到了正确的值。

标签: ios json swift realm


【解决方案1】:

在 EVReflecdtion 中,Realm 对象现在将默认实现 EVCustomReflectable 协议,以便它能够获取领域属性。请更新到最新版本。请注意,它现在也将使用 Realm 3。

【讨论】:

    【解决方案2】:

    这听起来可能是 EVReflection 库实现的问题。前段时间我在使用 ObjectMapper 和 Realm Lists 时遇到了一个问题,很难让它们很好地协同工作。逐步完成toJsonString() 实现并看看您是否能弄清楚那里发生了什么可能是个好主意。

    当然,这一切都是假设您实际上在某处设置了属性(从上面的代码 sn-p 中不清楚)

    【讨论】:

    猜你喜欢
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多