swiftUI 核心数据 @FetchRequest 单个对象

geo*_*eok 4 core-data swift swiftui

如何使用@FetchRequest以检索单个对象而不是一个FetchedResults<Card>?在我看来,我只需要一个对象。是否有替代方法来执行查询并根据唯一的属性值(例如 ID)获取单个对象?

struct MyCardsView: View {
    @FetchRequest(entity: Card.entity(), sortDescriptors: []) var cards: FetchedResults<Card>
    
    var body: some View {
        List{
            ForEach(cards){
                ....
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 6

[继续我的评论]...假设我们有Person实体并以某种方式存储/获取某个对象的一些 id,这里是一个可能的视图演示,它通过 id 获取该对象并使用它

注意:NSManagedObject 符合 ObservableObject

struct DemoPersonView: View {
    @ObservedObject var person: Person

    init(id objectID: NSManagedObjectID, in context: NSManagedObjectContext) {
        if let person = try? context.existingObject(with: objectID) as? Person {
            self.person = person
        } else {
            // if there is no object with that id, create new one
            self.person = Person(context: context)
            try? context.save()
        }
    }
    
    var body: some View {
      VStack {
        Text("User: \(person.name ?? "<Unknown>")")

        // ... other possible code to manage/edit person
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 Xcode 12 / iOS 14 测试