Still occurring on random occasions in iOS 14.6 in several separate views using code:
struct FilteredListView: View {
@EnvironmentObject var numberState: NumberState
@FetchRequest
var numbers: FetchedResults<Purging>
private var downloadCompletePublisher = NotificationCenter.default
.publisher(for: .dataDownloadComplete)
.map { notification in
return notification.userInfo as! [DataSources.Source : Int]
}
.receive(on: RunLoop.main)
var body: some View {
List {
ForEach(Array(numbers.enumerated()), id: \.element.uuid) { index, number in
NavigationLink(destination: NumberDetailView(number: number)) {
NumberRowView(number: number)
}
}
}
.add(SearchBar(searchText: $numberState.searchText, "Search for N-numbers"))
.id(numberState.refreshID) // <-- removing this seems to eliminate the issue
.onReceive(downloadCompletePublisher) { userInfo in
checkForUpdatedNumbers(userInfo: userInfo)
}
}
init(sorter: NumberSorter) {
... code to execute fetch request into _numbers
}
}
obviously, we don't have access to the UITableView data source methods, but I'd like to know how to peek into SwiftUI's execution.