core-data - Core Data - 数据传输 SwiftUI
问题描述
我正在尝试将 CDListModel 转移到我的今日视图,但我无法正确完成。这样我就可以在 list.reminders.count 中查看我今天总共有多少提醒。现在我得到0
struct Today: View {
@Environment(\.managedObjectContext) private var viewContext
@ObservedObject var list: CDListModel
@State var isTodayTapped = false
var body: some View {
Button(action: {
self.isTodayTapped.toggle()
}) {
ZStack{
RoundedRectangle(cornerRadius: 15)
.foregroundColor(.white)
HStack(alignment: .top, spacing: 100) {
Text(String(list.reminders!.count))
}
}
}
.fullScreenCover(isPresented: $isTodayTapped) {
TodayView()
}
}
}
主页视图
struct MainPageView: View {
@Environment(\.managedObjectContext) private var viewContext
var list: CDListModel
var body: some View {
ZStack {
NavigationView {
ZStack {
VStack{
HStack(spacing: 20){
Today(list: list) //What should I send here?
.environment(\.managedObjectContext, viewContext)
}
}
}
}
}
}
}
内容视图
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@State var selectedList = ListModel(color: "", text: "", reminders: [])
var body: some View {
MainPageView(selectedList: $selectedList, list: CDListModel())
.environment(\.managedObjectContext, viewContext)
}
}
解决方案
您不需要将数据从另一个视图传输到今天视图。因为您需要的数据已经在核心数据中,所以您可以使用
@FetchRequest( entity: CDReminder.entity(),
sortDescriptors:
[NSSortDescriptor(keyPath: \CDReminder.date, ascending: true)]
)var reminder: FetchedResults<CDReminder>
在 Today 视图中,无需修改任何其他视图。
今天更改如下
struct Today: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest( entity: CDReminder.entity(),
sortDescriptors:
[NSSortDescriptor(keyPath: \CDReminder.date, ascending: true)]
)var reminder: FetchedResults<CDReminder>
@State var isTodayTapped = false
var body: some View {
Button(action: {
self.isTodayTapped.toggle()
}) {
ZStack{
RoundedRectangle(cornerRadius: 15)
.foregroundColor(.white)
HStack(alignment: .top, spacing: 100) {
Text(String(list.reminders!.count))
}
}
}
.fullScreenCover(isPresented: $isTodayTapped) {
TodayView()
}
}
}
主页如下
struct MainPageView: View {
@Environment(\.managedObjectContext) private var viewContext
var body: some View {
ZStack {
NavigationView {
ZStack {
VStack{
HStack(spacing: 20){
Today()
.environment(\.managedObjectContext, viewContext)
}
}
}
}
}
}
}
内容视图如下
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@State var selectedList = ListModel(color: "", text: "", reminders: [])
var body: some View {
MainPageView(selectedList: $selectedList)
.environment(\.managedObjectContext, viewContext)
}
}
推荐阅读
- python - 如何在还包含整数的列表中找到最小的子列表
- c++ - poco 库,静态链接 (MT)
- whatsapp - 我可以将 WhatsApp 视频聊天功能集成到我的 react.js 应用程序中吗?
- python - 如何摆脱我的左手算法的while循环
- javascript - 当 React 已经使用 react-hotkeys-hook 呈现错误时无法刷新更新
- ansible - 循环嵌套的 ansible dict
- c# - 写入操作不会更新 xamarin 表单中 iOS 的特征值
- android-studio - Room 无法验证数据完整性和空数据崩溃
- docusignapi - 是否有其他 API 可以使用 Docusign CLM 中的预定义模板创建协议?
- java - 通过父更新删除添加子实体列表