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 Picker 不显示来自 CoreData 的复选标记