我有一个 s 列表,它们每个都有一个详细信息页面,Account
并且它们通过@Binding
. AccountDetailView
当前代码运行良好,更新很好。完全没有问题。但是,当我将onDelete
修饰符添加到ForEach
下面并在应用程序中尝试swipe to delete
手势时,它会崩溃并说Fatal Error: Index out of range
两次。
我进行了一些搜索并了解到ForEach
不知何故没有得到通知 - 或者忽略它,idk 很多细节 - 并寻找数组的最后一个索引。最后,它找不到它并抛出错误。
List {
Section(header: Text(String.empty), footer: Text(Strings.SectionFooters.accountListFooter.value)) {
ForEach(self.accountsModel.accounts.indices, id:\.self) { idx in
NavigationLink(destination: AccountDetailView(account: self.$accountsModel.accounts[idx])) {
AccountRow(account: self.$accountsModel.accounts[idx])
}
}.onDelete { (set) in
self.accountsModel.accounts.remove(atOffsets: set)
}
}
}
将id: \.self
参数保持在适当位置时,它会在 ' 处引发错误AppDelegate
,当我尝试删除参数时,应用程序可以正常工作,但它再次在上面的行处onDelete
引发相同的错误。NavigationLink
这里是AccountDetailView
struct AccountDetailView: View {
@EnvironmentObject var accountsModel: AccountsViewModel
@Binding var account: Account
@State var isEditing: Bool = false
var body: some View {
...
}
}
finallyAccount
类符合Codable
,NSObject
和Indentifiable
其他一些类。我不想仅仅因为不想让问题变得复杂且难以检查而给出所有代码。如果需要,我将提供代码的任何部分。提前致谢。