CosmicMind/Graph: поиск конкретных связанных объектов
Всем привет,
ищет поддержки для CoreData
оболочка называется Graph
от CosmicMind ( https://github.com/CosmicMind/Graph).
К сожалению, существует довольно мало документации, выходящей за рамки абсолютных основ (хотя, кажется, между прочим появилось много довольно мощных концепций).
Интересно, кто-нибудь может - пожалуйста - помочь мне с тем, как выбирать / фильтровать сущности в отношении 1:N.
Учитывая следующую структуру...
import Graph
let graph = Graph()
graph.clear()
let sectionA = Entity(type: "Section")
sectionA["id"] = 12
sectionA["name"] = "SectionA"
let sectionB = Entity(type: "Section")
sectionB["id"] = 2
sectionB["name"] = "SectionB"
let unitA = Entity(type: "Unit")
unitA["id"] = 122
unitA["name"] = "UnitA"
unitA["isExpensive"] = false
unitA.is(relationship: "UnitOfSection").of(sectionA)
let unitB = Entity(type: "Unit")
unitB["id"] = 19
unitB["name"] = "UnitB"
unitB["isExpensive"] = false
unitB.is(relationship: "UnitOfSection").of(sectionB)
let unitC = Entity(type: "Unit")
unitC["id"] = 7
unitC["name"] = "UnitC"
unitC["isExpensive"] = true
unitC.is(relationship: "UnitOfSection").of(sectionA)
let unitD = Entity(type: "Unit")
unitD["name"] = "UnitD"
unitD["isExpensive"] = true
unitD["id"] = 4
unitD.is(relationship: "UnitOfSection").of(sectionA)
graph.sync()
let unitsSearch = Search<Entity>(graph: graph).for(types: "Unit")
let units = unitsSearch.sync()
... Я хотел бы получить только те сущности, которые имеют отношение "UnitOfSection" к sectionA
И которые имеют свойство "isEx орого" со значением false
,
Есть идеи как этого добиться?
Спасибо + наилучшие пожелания
1 ответ
Решение
Это должно работать:
let units = Search<Entity>(graph: graph).for(types: "Unit").sync().filter { entity in
(entity["isExpensive"] as? Bool) == false &&
entity.relationship(types: "UnitOfSection").contains(where: { relationship in
relationship.object == sectionA
})
}
Что мы делаем, это:
- Выбрать все объекты "Юнит"
- Фильтровать объекты, которые имеют
isExpensive = false
- И извлеките отношения "UnitOfSection" каждой сущности и проверьте, является ли объект этой связи
sectionA