SwiftUI Picker 从 CoreData 返回空字符串
Posted
技术标签:
【中文标题】SwiftUI Picker 从 CoreData 返回空字符串【英文标题】:SwiftUI Picker return empty string from CoreData 【发布时间】:2020-08-06 09:15:24 【问题描述】:如何改进?当我使用ForEach
(CoreData 实体)时,选择器返回空字符串。如果我使用 testing[String]
一切正常
import SwiftUI
struct AddTask: View
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: Goal.entity(), sortDescriptors: []) var goals: FetchedResults<Goal>
@State private var taskName: String = ""
@State private var originGoal = ""
private let testGoal = ["Alpha", "Bravo", "Charlie"]
var body: some View
NavigationView
Form
Section
TextField("Enter Task Name", text: $taskName)
Section
Picker(selection: $originGoal, label: Text("Choose Goal"))
ForEach(goals, id: \.self) goal in
Text(goal.wrappedName)
Button("Add")
let task1 = Task(context: self.moc)
task1.name = taskName
task1.origin = Goal(context: self.moc)
task1.origin?.name = originGoal
try? self.moc.save()
或者也许 SwiftUI Picker 有不错的替代品?
【问题讨论】:
Picker return empty String
是什么意思?
选择器不要从目标列表中选择任何变体,显示,但不要选择
【参考方案1】:
selection
和id
应该是Picker
中的相同类型,所以试试(无法测试您的代码):
Section
Picker(selection: $originGoal, label: Text("Choose Goal"))
ForEach(goals, id: \.wrappedName) goal in
Text(goal.wrappedName)
有时tag
也有效(但并非总是如此),所以也试试
Section
Picker(selection: $originGoal, label: Text("Choose Goal"))
ForEach(goals, id: \.self) goal in
Text(goal.wrappedName).tag(goal.wrappedName)
【讨论】:
以上是关于SwiftUI Picker 从 CoreData 返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章
表单中的 SwiftUI Picker 不显示来自 CoreData 的复选标记
SwiftUI 中的一排 Picker ***,为啥拖动滚动区域从屏幕上的 Picker 控件偏移?
禁用 SwiftUI SegmentedPickerStyle Picker 中的段?