SwiftUI Неизвестный атрибут «Наблюдаемый объект» - PullRequest
1 голос
/ 15 октября 2019

Итак, я получаю ошибку Неизвестный атрибут ObservableObject рядом с вызовом @ObservableObject var dataSource = DataSource() ниже. ObservableObject отлично работал пару дней назад в другом проекте, но не больше.

import SwiftUI
import Combine


class DataSource: ObservableObject {

    var willChange = PassthroughSubject<Void,Never>()


    var expenses = [Expense]() {
        willSet { willChange.send() }
    }
    var savingsItems = [SavingsItem](){
        willSet { willChange.send() }
    }

    //@State var monthlyIncomeText: String
    //var monthlyIncome: Int = 1364


    init(){
        addNewExpense(withName: "Spotify", price: 14)

    }

    func addNewExpense(withName name: String, price: Int){
        let newExpense = Expense(name: name, price: price)
        expenses.append(newExpense)
    }

     func addNewSavingsItem(withName name: String, price: Int, percentage: Double){
        let newSavingsItem = SavingsItem(name: name, price: price, timeTilCompletion: 0, percentage: percentage)
        savingsItems.append(newSavingsItem)
    }
}

struct ContentView: View {

    @ObservableObject var dataSource = DataSource()

    var body: some View {
        VStack{
            Text("Expenses")
            List(dataSource.expenses) { expense in
                ExpenseRow(expense: expense)
            }
        } 
    } 
}

Может кто-нибудь помочь?

1 Ответ

1 голос
/ 15 октября 2019

ObservableObject - это протокол, которому ObservedObject s должен соответствовать. См. здесь для документации по ObservableObject и здесь для документации по ObservedObject, которая является оболочкой свойства, которую вы ищете. Измените свой ContentView код на это:

struct ContentView: View {

    @ObservedObject var dataSource = DataSource()

    var body: some View {
        VStack {
            Text("Expenses")
            List(dataSource.expenses) { expense in
                ExpenseRow(expense: expense)
            }
        } 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...