所以我在下面ObservableObject的@ObservableObject var dataSource = DataSource()调用旁边收到错误 Unknown 属性。在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)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
ObservableObject是ObservedObjects 必须遵守的协议。请参阅此处获取有关 的文档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)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7687 次 |
| 最近记录: |