Core data 从核心数据非标量属性更新SwiftUI视图

Core data 从核心数据非标量属性更新SwiftUI视图,core-data,swiftui,observedobject,Core Data,Swiftui,Observedobject,我有一个核心数据NSManagedObject实体Person,它带有一个Bool属性,我将其生成为NSNumber。(未使用“使用标量类型”复选框,因此Bool属性成为NSNumber) 我试图观察这个属性,employed,以控制UI @ObservedObject变量person:person var body: some View { List { Section { HStack { Toggle(isOn

我有一个核心数据NSManagedObject实体
Person
,它带有一个Bool属性,我将其生成为NSNumber。(未使用“使用标量类型”复选框,因此Bool属性成为NSNumber) 我试图观察这个属性,
employed
,以控制UI

@ObservedObject变量person:person

var body: some View {
    List {
        Section {
            HStack {
                Toggle(isOn: $person.employed) { <-- 1
                    Text("Showing employed content..")
                }
            }
        }
        if person.employed.boolValue {
            Section { } etc
var主体:一些视图{
名单{
部分{
HStack{

切换(isOn:$person.employed){一种可能的方法是通过自定义
绑定来实现:

Toggle("Showing employed content..", isOn: Binding<Bool>(get: {
         person.employed?.boolValue == true
      }, set: { value in
         person.employed = NSNumber(value: value)
      }))  
可以这样使用:

var isEmployed: Binding<Bool> {
    Binding<Bool>(get: {
        person.employed?.boolValue == true
    }, set: { value in
        person.employed = NSNumber(value: value)
    })
}

var body: some View {
    Toggle("Showing employed content..", isOn: isEmployed)
}
Toggle("Showing employed content..", isOn: $person.employed.boolBinding)

感谢@Alladinian给出的答案。它非常有效。我很想把这个因素考虑进去,使它更干净,但很不幸,上面vadian提供的解决方案似乎不起作用。我最终直接在SwiftUI:
@FetchRequest(FetchRequest:Person.anyFetchRequestHere)中获取了NSManagedObjectvar person:FetchedResults
@Zsolt很高兴能为您提供帮助。我已经更新了答案,添加了更多选项。
Toggle("Showing employed content..", isOn: $person.employed.boolBinding)