Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在SwiftUI中创建核心数据管理器环境_Ios_Swift_Core Data_Swiftui - Fatal编程技术网

Ios 如何在SwiftUI中创建核心数据管理器环境

Ios 如何在SwiftUI中创建核心数据管理器环境,ios,swift,core-data,swiftui,Ios,Swift,Core Data,Swiftui,我对SwiftUI和核心数据相当陌生。我了解了可观察对象,我可以将其用作环境对象,只加载一次数据,并使其可用于每个视图。 在那里,我有一个类符合observateObject,我可以发布我的局部变量/数据 现在,我学习了核心数据,我想知道,我如何做一些熟悉的事情。 当我创建实体和关系时,我会得到一些链接: extension Foo { @nonobjc public class func fetchRequest() -> NSFetchRequest<Foo> {

我对SwiftUI和核心数据相当陌生。我了解了可观察对象,我可以将其用作环境对象,只加载一次数据,并使其可用于每个视图。 在那里,我有一个类符合
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