Я бы хотел использовать древовидную структуру данных для проекта.
Я следовал этому уроку: Структура данных Swift Tree
В этом примере узлы имеют параметр value с универсальным типом.
class Node<T> {
var value: T
weak var parent: Node?
var children: [Node] = []
init(value: T) {
self.value = value
}
func add(child: Node) {
children.append(child)
child.parent = self
}
}
Мне интересно, должны ли структуры данных просто содержать ссылку на объект модели, а не быть самой моделью?
т.е. Если бы я хотел иметь структуру данных семейного древа, было бы лучше сделать:
class Node {
var value: Person
weak var parent: Node?
var children: [Node] = []
init(value: Person) {
self.value = value
}
func add(child: Node) {
children.append(child)
child.parent = self
}
}
class Person {
name: String
init(name: String) {
self.name
}
}
Или это было бы лучше:
class Person {
let name: String
weak var parent: Person?
var children: [Person] = []
init(name: String) {
self.name =
}
func add(child: Person) {
children.append(child)
child.parent = self
}
}
Я могу себе представить, что разделение модели и структуры полезно, но тогда я могу также представить, что это усложняет некоторые функции, например. синхронизация с облаком.