swiftui - 调用中缺少参数“语言”、“日期”的参数
问题描述
我有一个可观察的对象:
class Schedule: ObservableObject {
@Published var language: Language?
@Published var date = Date()
init(language: Language, date: Date) {
self.language = language
self.date = date
}
}
用户为此创建数据:
struct AddScheduleView: View {
@StateObject var schedule = Schedule() ***Missing arguments for parameters 'language', 'date' in call***
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(entity: Language.entity(), sortDescriptors: []) var languages: FetchedResults<Language>
var body: some View {
GeometryReader { geometry in
HStack {
VStack {
Text("What to learn:")
.foregroundColor(.white)
.fontWeight(.bold)
.opacity(0.8)
.font(.system(size: 12))
.frame(width: geometry.size.width / 4, height: 12, alignment: .topLeading)
.padding()
Picker("Choose a language", selection: $schedule.language) { ***Generic parameter 'SelectionValue' could not be inferred***
ForEach(languages, id:\.self) {
Text("\($0.name ?? "Unknown")")
}
}
.frame(width: 100, height: 500, alignment: .topLeading)
.padding()
}
Spacer()
VStack {
Text("When to learn:")
.foregroundColor(.white)
.fontWeight(.bold)
.opacity(0.8)
.font(.system(size: 12))
.frame(width: geometry.size.width / 4, height: 12, alignment: .topTrailing)
.padding()
DatePicker(selection: $schedule.date, in: ...Date()) {
}
.frame(width: 100, height: 500, alignment: .topTrailing)
.padding()
}
}
}
}
}
我在带有@StateObject 的行的 * 中收到错误消息。我不明白的是,当我没有任何东西可以传递给它时,为什么我应该将一个参数传递给对 Schedule 的调用。用户正在从语言和日期选择器生成数据。在第一个选择器的行中也会发生错误,但不是第二个。
解决方案
在 中提供默认值init
,例如
class Schedule: ObservableObject {
@Published var language: Language?
@Published var date: Date
init(language: Language? = nil, date: Date = Date()) { // << here !!
self.language = language
self.date = date
}
}
推荐阅读
- python - Python数据类型中常用方法VS运算符作为列表的区别
- node.js - 函数回调不执行
- c# - ThenInclude 添加了我没有 Include 的导航表
- git - git:一切都是最新的
- python - 将浮点列转换为字符串并在 Pandas 中测试字符串是否存在
- c# - 具有动态 groupBy 的动态对象列表
- php - 从 url 获取值并在 sql 查询中使用它
- javascript - AngularJS Socketio 工厂错误我无法修复
- php - PHP - mail() 函数在我的 localhost(127.0.0.1) 上不起作用
- c# - 何时以及如何使用 DataSource 而不是直接的 SqlConnection