我有一个 提醒结构定义如下。我有一个主视图,我在主视图中使用状态属性定义了此结构,然后调用另外 2 个视图。我已将此状态定义为视图中的绑定属性。该视图读取数组,然后显示值。
struct Reminder: Identifiable, Hashable {
var id = UUID()
var title: String
var time: Date
var rangeStart: Date
var rangeEnd: Date
var frequency: Int
var sound: String
var specificTimeSet: Bool
var remindThroughoutHour: Bool
}
提醒列表查看:
struct ReminderListView: View {
@Binding var reminders: [Reminder]
var body: some View {
NavigationView {
if reminders.isEmpty {
VStack {
Text("You’ve no Reminders")
.font(.title2)
.foregroundColor(.gray)
.padding()
Spacer()
}
.navigationTitle("Your Reminders")
} else {
List {
ForEach($reminders) { reminder in
HStack {
Text(reminder.title)
Spacer()
NavigationLink(destination: CreateReminderView(reminders: $reminders, reminderToEdit: reminder)) {
Text("Edit")
.foregroundColor(.blue)
}
Button(action: {
deleteReminder(reminder.wrappedValue)
}) {
Image(systemName: "trash")
.foregroundColor(.red)
}
}
}
}
.navigationTitle("Your Reminders")
}
}
}
}
尝试访问 forEach 块中的
reminder.title
时出现以下错误。
Initializer 'init(_:)' requires that 'Binding<String>' conform to 'StringProtocol'
我不确定这是否是访问绑定数组的正确方法。请问我该如何解决这个问题?
因为
reminder
中的 ForEach
是 Binding<Reminder>
,所以试试这个:
...
ForEach($reminders) { $reminder in //<- put $ here
HStack {
Text(reminder.title)
...
}
}