Core data 从核心数据非标量属性更新SwiftUI视图
我有一个核心数据NSManagedObject实体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
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)