【发布时间】:2021-10-17 05:58:18
【问题描述】:
我对使用 SwiftUI 的 CoreData 感到有些困惑,我只是在为 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)
}
}
}
【问题讨论】:
标签: ios swift core-data swiftui