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】:

selectionid 应该是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 Picker 选择结构

禁用 SwiftUI SegmentedPickerStyle Picker 中的段?

在 SwiftUI Picker 中为 NSManagedObject 设置默认值?

SwiftUI:如何从 Siri Intent 添加 CoreData 记录