我对CoreData使用 SwiftUI 感到有些困惑,我只是在为Toggle. 我设置了新创建的项目,PersistenceController但切换始终保持关闭。我没有太多使用经验CoreData,我之前关于 CoreData 的问题是不正确的,我被错误地告知了修复。
持久性控制器
static var preview: PersistenceController = {
let result = PersistenceController(inMemory: true)
let viewContext = result.container.viewContext
for _ in 0..<10 {
let newItem = Item(context: viewContext)
newItem.bool = false
}
do {
try viewContext.save()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
return result
}()
内容视图
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Item.bool, ascending: true)], animation: .default)
private var items: FetchedResults<Item>
var body: some View {
VStack {
Toggle("", isOn: Binding<Bool>(
get: { self.items.first?.bool ?? false },
set: {
self.items.first?.bool = $0
try? viewContext.save()
}
))
.labelsHidden()
.frame(width: 100, height: 100, alignment: .center)
}
}
}