SwiftUI CoreData 选择器问题

Posted

技术标签:

【中文标题】SwiftUI CoreData 选择器问题【英文标题】:SwiftUI CoreData Picker issue 【发布时间】:2021-07-12 22:30:17 【问题描述】:

我有一个项目,其中我的user 实体可以有多个directory 实体(directories 关系)。我试图在我的一个视图上创建一个选择器,它显示与当前user 关联的directories。我已经尝试了多种方法,但每次解决小错误时,我都会收到一个无法解决的新错误:Failed to produce diagnostic for expression; please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project

我在网上查看过,似乎可以通过使列表可识别(我的 directory 实体已经是因为 CoreData)或通过指出 id(试过 id:\.self)来解决这个问题。想看看有没有人知道怎么解决。

到目前为止我已经尝试过:

Picker("Directories", selection: $selectedDirectory) 
    ForEach(user.directories, id:\.self) 
        Text($0.name).tag($0.id)
        
.padding()

Picker("", selection: $selectedDirectory) 
    ForEach(user.directories, id: \.self) 
        Text($0.name)
    

Picker(selection: $selectedDirectory,
   label: Text("Picker"),
   content: 
        ForEach(user.directories, id: \.self)  
            Text($0)
        
   )
.padding()
.pickerStyle(MenuPickerStyle())

Picker("Directories", selection: $selectedDirectory) 
   ForEach(user.directories, id: \.self)  currDirectory in
      Text(currDirectory.name!)
   

【问题讨论】:

如果没有Minimal Reproducible Example,就无法帮助您进行故障排除。该错误通常是由拼写错误引起的。试试这样的ForEach((user.directories.allObjects as? [YourClassName]) ?? [], id: \.self) currDirectory in @loremipsum 不知道如何做一个更小的例子。但这解决了它。只是无法让选择器在单击时关闭,但它会构建、运行并显示目录。非常感谢。我会在几个小时内删除这个问题,除非你想把你的问题记下来作为答案。 我很高兴它成功了。我提交了答案。 【参考方案1】:

试试这样的

ForEach((user.directories.allObjects as? [YourClassName]) ?? [], id: \.self)  currDirectory in

【讨论】:

以上是关于SwiftUI CoreData 选择器问题的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI CoreData 选择器问题

SwiftUI - 使用 CoreData 获取的结果来填充选取器

表单中的 SwiftUI Picker 不显示来自 CoreData 的复选标记

SwiftUI Picker 从 CoreData 返回空字符串

SwiftUI - 选择器

SwiftUI Picker 多个错误,核心数据,布局