【问题标题】:Realm Swift, relationship and memory space errorRealm Swift,关系和内存空间错误
【发布时间】:2016-11-03 09:57:35
【问题描述】:

在我的代码中,我有两个像这样链接的类:

class parent: Object {
    dynamic var id:Int = 0
    let children = List<child>()
    ...
}

class child: Object {
    dynamic var myParent = parent?
    ...
}

我这样做是为了能够轻松找到孩子的父母和父母的孩子。 但是现在,当我想获得父母时:

let myParent = realm.objects(parent).filter("id == 1").first

我得到一个非常大的 JSON 字符串作为回报。因为我的父母有很多孩子,对于每个孩子,我都会显示父母和孩子......所以我的 json 几乎是无限的。

这可能是我的错误“无法分配内存大小”的问题吗? 像这样声明我的孩子会更好吗:

class child: Object {
    dynamic var myParentId:Int = 0
    ...
} 

我不知道一个非常大的 json 是否会成为内存空间错误的原因。

我希望我的问题足够清楚:)

感谢您的帮助!

【问题讨论】:

  • JSON 是什么意思? JSON在这里如何与Realm结合?
  • 实际上,当我打印一个 json 结果时,它会显示一个 JSON。我说的是这个 JSON。好点吗? :)
  • 啊,好吧!哈哈,是的,这不是真正的 JSON 本身,更多的是 Xcode 如何在控制台中打印出对象。不过它们看起来很相似!
  • 哦好的^^,谢谢

标签: json swift memory-management realm


【解决方案1】:

虽然您确实可以手动管理孩子和父母之间的两种关系,但正如您所发现的那样,这可能非常棘手。

Realm 提供对inverse relationships 的支持,对象可以在其中查找它所属的对象。

class parent: Object {
    dynamic var id:Int = 0
    let children = List<child>()
    ...
}

class child: Object {
    let parent = LinkingObjects(fromType: parent.self, property: "children").first
    ...
}

这应该有望自动化您在此处尝试执行的操作。 :)

【讨论】:

  • 非常感谢,这正是我想要的。我会试试这个,希望它能解决我的记忆问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2023-04-01
  • 1970-01-01
  • 2018-06-10
  • 2023-04-01
相关资源
最近更新 更多