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

Posted

技术标签:

【中文标题】表单中的 SwiftUI Picker 不显示来自 CoreData 的复选标记【英文标题】:SwiftUI Picker in Form does not show checkmark from CoreData 【发布时间】:2019-12-30 15:29:49 【问题描述】:

我有一个问题,在选择器中选择一个值后,我没有看到它被选中:

struct SampleView: View 
    @FetchRequest(
        entity: Category.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \Category.title, ascending: true)
        ]

    ) var categories: FetchedResults<Category>
    @State private var category = UUID()

    var body: some View 
        NavigationView 
        VStack 
            Form 
                Picker(selection: $category, label: Text("Picker")) 
                    ForEach(categories)  cat in
                        Text(cat.title!)
                    
                
            
        
        
    

我的核心数据有这两个属性:

@NSManaged public var title: String?
@NSManaged public var id: UUID?

【问题讨论】:

【参考方案1】:

Picker中的选择应该与呈现值的类型相同,所以你需要类似

@State private var category: UUID? = UUID()

注意: 可能是由于并非我的示例中提供的所有代码,我需要按如下方式更改您的代码以使其可编译(使用 Xcode 11.2 测试)

ForEach(categories, id: \.id)  cat in

【讨论】:

你成就了我的一天,UUID?解决了这个问题。非常感谢!

以上是关于表单中的 SwiftUI Picker 不显示来自 CoreData 的复选标记的主要内容,如果未能解决你的问题,请参考以下文章

未显示来自 JSON 的 SwiftUI Picker 数据

为啥这个 SwiftUI Picker 代码不起作用?

SwiftUI Picker 填充问题 - 选择器中的 ForEach 循环不填充

SwiftUI Picker 视图中不显示值

如何在 SwiftUI URLSession 中显示来自服务器的错误消息

视图中的 SwiftUI Picker 会在点击时自行禁用