首页 > 解决方案 > 访问相关实体

问题描述

我在CoreData中有三个实体。,和. 每个都与另一个相关。SubjectTopicContent

在此处输入图像描述

我想访问三个不同视图中的数据a SubjectView, aTopicView和 a ContentView

我尝试通过 FetchRequest 获取数据。在这里,您可以看到所有主题的 FetchRequest。它加载所有数据。但我想限制它只加载特定的数据Subject

@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "title", ascending: true)])
private var topics: FetchedResults<Topic>

主题的 FetchRequest如下所示:

@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "isMajor", ascending: false), NSSortDescriptor(key: "name", ascending: true)])
private var subjects: FetchedResults<Subject>

对于这样的内容

@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "date", ascending: true)])
    private var contents: FetchedResults<Content>

也许您知道如何重构 FetchRequest 以使数据相互依赖。

更新:

我需要什么NSPredicate(format: "")

非常感谢。

标签: core-dataswiftui

解决方案


struct TopicView: View {
    
    ...

    var subject: Subject
    
    @FetchRequest var topics: FetchedResults<Topic>
    
    init(subject: Subject) {
        self.subject = subject
        self._topics = FetchRequest(entity: Topic.entity(), sortDescriptors: [NSSortDescriptor(key: "title", ascending: true)], predicate: NSPredicate(format: "subject == %@", subject))
    }

    ...

}

使用“谓词”。而已!


推荐阅读