2016-11-03 2 views
0

В моем коде, я два класса связаны так:Realm Swift, отношения и пространство памяти ошибок

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 может стать причиной космической памяти ошибки.

Я надеюсь, что мои вопросы достаточно ясно :)

Спасибо за вашу помощь!

+0

Что вы подразумеваете под JSON? Как здесь JSON сочетается с Королевством? – TiM

+0

На самом деле, когда я делаю ПЕЧАТЬ результата json, он отображает JSON. Именно об этом JSON я говорю. Это лучше? :) – Adz

+0

Ahh хорошо! Ха-ха-да, на самом деле это не JSON, а просто то, как Xcode печатает объекты в консоли. Они выглядят довольно похожими, хотя! – TiM

ответ

1

Хотя вы действительно можете вручную управлять 2 отношениями между ребенком и родителем, как вы обнаружили, это может быть довольно сложно.

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 
    ... 
} 

Это, надеюсь, автоматизирует то, что вы пытаетесь сделать здесь. :)

+0

Большое спасибо, это именно то, что я искал. Я попробую это и надеюсь, что это исправит мою проблему с памятью. – Adz

Смежные вопросы