Ios 如何在SwiftUI中创建核心数据管理器环境
我对SwiftUI和核心数据相当陌生。我了解了可观察对象,我可以将其用作环境对象,只加载一次数据,并使其可用于每个视图。 在那里,我有一个类符合Ios 如何在SwiftUI中创建核心数据管理器环境,ios,swift,core-data,swiftui,Ios,Swift,Core Data,Swiftui,我对SwiftUI和核心数据相当陌生。我了解了可观察对象,我可以将其用作环境对象,只加载一次数据,并使其可用于每个视图。 在那里,我有一个类符合observateObject,我可以发布我的局部变量/数据 现在,我学习了核心数据,我想知道,我如何做一些熟悉的事情。 当我创建实体和关系时,我会得到一些链接: extension Foo { @nonobjc public class func fetchRequest() -> NSFetchRequest<Foo> {
observateObject
,我可以发布我的局部变量/数据
现在,我学习了核心数据,我想知道,我如何做一些熟悉的事情。
当我创建实体和关系时,我会得到一些链接:
extension Foo {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Foo> {
return NSFetchRequest<Foo>(entityName: "Foo")
}
@NSManaged public var name: String
@NSManaged public var date: Date
@NSManaged public var bars: NSSet
public var barsArray: [Bar] {
let set = bars as? Set<Bar> ?? []
return Array(set)
}
}
我的问题是,如何创建一个Cora数据管理器类(?),使我的数据像在可观察对象中一样可用。或者有更好/更容易的吗
更像是一个现实世界的问题:我有一个带有类别的实体,在我的应用程序的man视图中,我调用fetch请求来访问类别。但是,只加载一次并将其传递给所需的视图是有意义的,问题是:如何加载?希望如此,这是有意义的。最好的方法是在主视图中使用一次
@FetchRequest
,然后将实体传递给子视图
假设您在ListView中有FetchRequest:
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Foo.date, ascending: false)]) var foos: FetchedResults<Foo>
FetchRequest是一个很好的特性,在我看来,它使SwiftUI和CoreData变得非常好。无论何时创建新实体,FetchRequest都会立即更新。最好的方法是在MainView中使用
@FetchRequest
一次,然后将实体传递给子视图
假设您在ListView中有FetchRequest:
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Foo.date, ascending: false)]) var foos: FetchedResults<Foo>
FetchRequest是一个很好的特性,在我看来,它使SwiftUI和CoreData变得非常好。无论何时创建新实体,FetchRequest都会立即更新。您好,谢谢您的回复。你的答案是我已经知道的。我想将FetchRequest移出“ListView”,因为我有多个ListView可以访问fetch请求。让我们说“更高一级”。在多个视图中复制FetchRequest没有什么错,至少如果您在获取新数据时不进行任何密集的后处理。您好,谢谢您的回复。你的答案是我已经知道的。我想将FetchRequest移出“ListView”,因为我有多个ListView可以访问fetch请求。让我们说“更高一级”。在多个视图中复制FetchRequest没有什么错,至少如果您在提取新数据时不进行任何密集的后处理。
struct DetailView : View
{
@ObservedObject var foo : Foo