Ios 如何从ViewController获取CoreData属性
我有一个简单的CoreData堆栈,其中包含一个CoreData类Ios 如何从ViewController获取CoreData属性,ios,swift,core-data,swiftui,Ios,Swift,Core Data,Swiftui,我有一个简单的CoreData堆栈,其中包含一个CoreData类Booking,我想在ViewController中使用它。我想获取预订的每条记录,并使用每条记录的数据属性将事件放入日历视图控制器中 我发现这段代码应该是用来获取CoreData实体的,看起来还可以——我只是不知道如何使用这一点以外的数据,比如在循环中获取Booking.date属性并打印它 在我的ViewController课程中有: @Environment(\.managedObjectContext) var m
Booking
,我想在ViewController中使用它。我想获取预订的每条记录
,并使用每条记录的数据
属性将事件放入日历视图控制器中
我发现这段代码应该是用来获取CoreData实体的,看起来还可以——我只是不知道如何使用这一点以外的数据,比如在循环中获取Booking.date
属性并打印它
在我的ViewController
课程中有:
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Booking.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Booking.id, ascending: false)
]
) var bookings: FetchedResults<Booking>
@Environment(\.managedObjectContext)var managedObjectContext
@获取请求(
实体:Booking.entity(),
sortDescriptors:[
NSSortDescriptor(密钥路径:\Booking.id,升序:false)
]
)var预订:获取结果
这没有错误,但是我不能确定这是否确实是从预订
实体获取数据,因为我不知道如何使用返回的数据
我尝试在我的覆盖func loadView()
方法中使用打印(预订)
。当它打开打印语句时,它崩溃了,似乎是因为它是nil
,并且没有打开-但是当我试图打开它时,没有任何效果
我想我从CoreData获取预订的方式一定是做错了什么,但我就是说不出是什么错。是否有从ViewController
注意:我已经在AppDelegate
中为NSPersistantContainer
和saveContext
完成了所有必要的设置。我已经设法在代码的其他区域使用了CoreData
,因此我知道它的这一方面工作正常。在这个ViewController
中,将FetchedResultsController
放在一个可观察对象中,作为您的管理器/ViewModel可能会有所帮助
@已发布的var bookings
将通过NSFetchedResultsControllerDelegate
的方法controllerDidChangeContent(:)
通过单例模式或其他模式使用observeObject
的共享实例将使您能够在ViewController
和SwiftUI视图之间共享数据
我刚才为另一个问题制作了这个视频,显示了基本设置。FetchedResultsController的
如果您真的使用ViewController类,那么这些属性包装器都不能正常工作(如果可以的话),因为它们只为SwiftUI视图设计。这是有道理的。我想我没有意识到这一点。感谢您提供的信息。对于我的日历组件,我使用的是UIViewController
类。我可以使用可观察对象
吗?我还使用UIViewControllerRepresentable在SwiftUI堆栈中显示它。如果可观察对象仅在SwiftUI中使用,我不确定如何将核心数据实体放入我的UIViewController
类中。@ObservedObject
只能在SwiftUI中用于更新UIViewController
,您将使用传统意义上的FetchedResultsController
(在第二个链接中介绍。controllerDidChangeContent(:)
更新observeObject
和您的UIViewController
)。