我正在尝试制作一个可以在iPhone上使用的日历应用程序。我正在使用SwiftUI作为应用程序,并使用FirebaseFirestore
作为我的数据库。
我正在尝试做的是在一个集合(用户)中创建一个Firestore
的文档,并且我希望文档的名称是用户使用日期选择器选择的日期。我已经搜索了关于将日期转换为String
的内容,但是当我将其应用于@State
变量时,它会发出警报。有什么方法可以解决这个问题吗?
下面是代码:
import SwiftUI
struct SwiftUIView: View {
@State var date = Date()
var picked = dateToString(date: date, format: "YYYY MM dd")
var body: some View {
DatePicker(
"Datepicker",
selection: $date
)
.datePickerStyle(.graphical)
}
func dateToString(date: Date, format: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: date)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
在带有var picked
的行上,出现两个错误:
1.不能在属性初始值设定项中使用示例成员"date";属性初始值设定项在"self"可用之前运行
1.无法在属性初始值设定项中使用示例成员"dateToString";属性初始值设定项在"self"可用之前运行
2条答案
按热度按时间1cosmwyk1#
将
picked
替换为:它应该是一个计算变量。
rnmwe5a22#
在self初始化之前,你不能使用视图的任何变量。这意味着你只能在self可用时使用变量。由于在这种情况下不能这样做,你应该这样做:
onChangeOf
将确保您的日期作为字符串始终与日期选择器的日期保持最新。请参阅
.onAppear
的文档:https://developer.apple.com/documentation/swiftui/view/onAppear(perform:)请参阅.onChangeOf
的文档:https://developer.apple.com/documentation/swiftui/view/onchange(of:perform:)要设置所选的变量,必须使用如下计算变量: