我有一个 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其他一些类。我不想仅仅因为不想让问题变得复杂且难以检查而给出所有代码。如果需要,我将提供代码的任何部分。提前致谢。