Использование ObservedObject в ObservedObject правильно - PullRequest
0 голосов
/ 23 марта 2020

Редактировать

Я думаю, что нашел свою проблему. Моя ViewModel расширила абстрактный класс (он не представлен ниже. Я удалил его и теперь он работает, я думаю. Создаст еще одну проблему, если проблема не исчезнет.

Цель

Я пытаюсь сохранить NSManagedObject как ObservedObject в «ViewModel». Затем я использую эту «ViewModel» в моем SwiftUI View и получаю любые обновления для взаимосвязей, которые фиксируются и отражаются.

Я использовал это до сих пор : ObservedObject внутри ObservableObject не обновляется. Представление Но вместо этого я использовал ObservedObject?

«Рабочий» пример

При нажатии «Добавить модель отношения» будет увеличиваться Текст, который считает это отношение

Просмотр

struct PlayView: View {
    @ObservedObject var data: ConfigureAndPlayTransaction

    var body: some View {
        VStack {
            Button(action: { 
                self.data.primaryModel.relationshipModels.append(RelationshipModel())
                self.data.objectWillChange.send()
            })
            {
                Text("Add Relationship Model")
            }
            Text(String(self.data.primaryModel.relationshipModels.count))
        }
    }
}

"Просмотр модели"

class ViewModel : ObservableObject {
    @ObservedObject var primaryModel: PrimaryModel

    var anyCancellable: AnyCancellable? = nil

    /// Methods
    init (primaryModel: PrimaryModel) {
        _primaryModel = ObservedObject(initialValue: primaryModel)

        anyCancellable = self.trail.objectWillChange.sink { (_) in
            self.objectWillChange.send()
        }
    }
}

Проблема

Если я добавлю @Published var name: String = "Hello World" к «ViewModel», затем нажатие кнопки «Добавить модель отношений» больше не приводит к следующему приращению текста.

Я очень новичок в разработке SwiftUI / iOS. Моя голова обернута вокруг Co reData, но не объединить.

...