如何解决带有核心数据的SwiftUI在Xcode 12中的模拟器中出现空白屏幕
在xcode12中,使用核心数据运行SwiftUI代码时,模拟器上出现空白屏幕。有解决方案吗?
解决方法
工具栏项目默认代码在 SwiftUI 中被破坏:在模板代码中使用它。将列表嵌入到 NavigationView 中,然后将按钮嵌入到 HStack 中。
var body: some View {
NavigationView { //added
List {
ForEach(items) { item in
Text("Item at \(item.timestamp!,formatter: itemFormatter)")
}
.onDelete(perform: deleteItems)
} .toolbar {
#if os(iOS)
HStack { //added
EditButton()
Button(action: addItem) {
Label("Add Item",systemImage: "plus")
}
}//added
#endif
}
}//added NavView embed
}
还要使预览正常工作,您需要将 PersistenceController 更改为 shared 而不是 preview。
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environment(\.managedObjectContext,PersistenceController.shared.container.viewContext)
}
}
,
在模拟器中清除数据对我不起作用。
我在.toolbar方面苦苦挣扎,但发现它仅适用于发布的XCode 12中的NavigationView。
因此,如果您使用的是单击以使用Core Data时附带的模板,只需将其添加到ContentView。
,如果要在模拟器中查看来自模板的示例输入(带有时间戳的10行),则需要在App.swift中进行更改:
让persistenceController = PersistenceController.shared
到
让persistenceController = PersistenceController.preview
没有进行此更改,Apple提供的模板仅在ContentView的画布预览中显示示例输入。 Persistence.swift文件具有两个静态变量:共享和预览。 .shared只是启动一个(空的)PersistenceController,而.preview静态变量启动一个PersistenceController,将带有当前时间戳的十项添加到viewContext并保存。
,在模拟器中清除“设备->删除所有内容和设置”下的数据对我有用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。