Swiftui 如何以编程方式从选择器视图中删除所有项
我的SwiftUI应用程序中有以下代码Swiftui 如何以编程方式从选择器视图中删除所有项,swiftui,picker,Swiftui,Picker,我的SwiftUI应用程序中有以下代码 struct ContentView: View { @State private var selectedCountry: Country? @State private var showSetting = false @FetchRequest(entity: Country.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Country.cntryName,
struct ContentView: View {
@State private var selectedCountry: Country?
@State private var showSetting = false
@FetchRequest(entity: Country.entity(),
sortDescriptors: [NSSortDescriptor(keyPath: \Country.cntryName, ascending: true)]
) var countries: FetchedResults<Country>
var body: some View {
NavigationView {
VStack {
Form {
Picker("Pick a country", selection: $selectedCountry) {
ForEach(countries, id: \Country.cntryName) { country in
Text(country.cntryName ?? "Error").tag(country as Country?)
}
}
if selectedCountry != nil {
DetailView(cntryName: (selectedCountry?.cntryName!)!)
}
}
}
.navigationBarTitle("UNECE Data")
.navigationBarItems(trailing: Button("Settings", action: {
self.showSetting.toggle()
}))
}
.sheet(isPresented: $showSetting) {
SettingsView(showSetting: self.$showSetting)
}
}
}
struct ContentView:View{
@国家/地区:国家/地区?
@状态私有变量showSetting=false
@FetchRequest(实体:Country.entity(),
sortDescriptors:[NSSortDescriptor(密钥路径:\Country.cntryName,升序:true)]
)var国家/地区:获取结果
var body:一些观点{
导航视图{
VStack{
形式{
选择器(“选择一个国家”,选择:$selectedCountry){
ForEach(国家,id:\Country.cntryName){国家/地区
文本(country.cntryName??“Error”).tag(国家作为国家?)
}
}
如果选择了国家/地区!=无{
详细视图(cntryName:(selectedCountry?.cntryName!)!)
}
}
}
.navigationBarTitle(“UNECE数据”)
.navigationBarItems(尾部:按钮(“设置”),操作:{
self.showSetting.toggle()
}))
}
.sheet(显示:$showSetting){
设置视图(显示设置:self.$showSetting)
}
}
}
我在SettingView中更新CoreData国家实体,一旦应用程序返回ContentView,我想从选择器中删除所有项目并加载新数据。在选择器中的重复项上方编码-将新项添加到旧项集中。动态值集的选择器?请看,我的问题是,当SettingsView被取消时,Picker会加载countries FetchedResults,但它会将Picker中的项目加倍-最初加载的FetchedResults+新加载的项目。