From 4f1e67e190ce52a83dc3974d9e6b60e1a033e65d Mon Sep 17 00:00:00 2001 From: Kenta Kubo <601636+kkk669@users.noreply.github.com> Date: Mon, 24 Apr 2023 00:40:28 +0900 Subject: [PATCH] Fix #61 --- DNSecure/Views/DetailView.swift | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DNSecure/Views/DetailView.swift b/DNSecure/Views/DetailView.swift index e12d0ce..9b1e9cd 100644 --- a/DNSecure/Views/DetailView.swift +++ b/DNSecure/Views/DetailView.swift @@ -11,8 +11,8 @@ struct DetailView { @Binding var server: Resolver @Binding var isOn: Bool - private func binding(for rule: OnDemandRule) -> Binding { - guard let index = self.server.onDemandRules.firstIndex(of: rule) else { + private func binding(for id: UUID) -> Binding { + guard let index = self.server.onDemandRules.map(\.id).firstIndex(of: id) else { preconditionFailure("Can't find rule in array") } return self.$server.onDemandRules[index] @@ -45,7 +45,7 @@ extension DetailView: View { self.serverConfigurationSections Section { ForEach(self.server.onDemandRules) { rule in - NavigationLink(rule.name, value: rule) + NavigationLink(rule.name, value: rule.id) } .onDelete { self.server.onDemandRules.remove(atOffsets: $0) } .onMove { self.server.onDemandRules.move(fromOffsets: $0, toOffset: $1) } @@ -61,10 +61,10 @@ extension DetailView: View { } } } - .navigationDestination(for: OnDemandRule.self) { rule in + .navigationDestination(for: UUID.self) { id in // When RuleView is opened and tap another server on the sidebar, the previous server's rule comes here. - if self.server.onDemandRules.contains(rule) { - RuleView(rule: self.binding(for: rule)) + if self.server.onDemandRules.map(\.id).contains(id) { + RuleView(rule: self.binding(for: id)) } } } @@ -87,7 +87,7 @@ extension DetailView: View { Section { ForEach(self.server.onDemandRules) { rule in NavigationLink(rule.name) { - RuleView(rule: self.binding(for: rule)) + RuleView(rule: self.binding(for: rule.id)) } } .onDelete { self.server.onDemandRules.remove(atOffsets: $0) }