SwiftUI:如何在不在列表中的情况下从 CoreData show/edit 一个整数?

SwiftUI: How to show/edit an int from CoreData without being in a List?

这里是自学初学者。我试图在 ContentView 的 VStack 中显示来自核心数据的 Int,而不是在列表中。但实际上,我能找到的所有关于 Core Data(跟踪书籍、电影、订单、学生)的教程都使用 List 来显示包含 Int 的数组。没有显示 Int 本身。

Xcode 可以毫无问题地构建 countnum.countnum +=1。在我看来,它读起来很好。但是一旦我尝试展示它,它就不起作用了。我在这里破坏我的大脑。

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc
    @FetchRequest(sortDescriptors: []) var countnum: FetchedResults<CountNum>
    
    var body: some View {
//        let countnum = CountNum(context: moc)
        VStack{
            Text("+")
                .padding()
                .onTapGesture (count: 2){
                    let countnum = CountNum(context: moc)
                    countnum.countnum += 1
                }
            Text("\(countnum)") //No exact matches in call to instance method 'appendInterpolation'
        }
        
        
    }
}

谢谢

....all the tutorials ... show an array containing an Int. 是的,那是因为CoreData 可以包含许多“对象”。你得到一个 CountNum 对象的数组 你做你的 .....var countnum: FetchedResults<CountNum>。所以你需要决定你想要哪个 CountNum 采用。比如你要用第一个,那么:

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc
    @FetchRequest(sortDescriptors: []) var countnum: FetchedResults<CountNum>
    
    var body: some View {
        VStack {
            if let firstItem = countnum.first {
                Text("+")
                    .padding()
                    .onTapGesture(count: 2) {
                        firstItem.countnum += 1
                        do {
                            try moc.save()
                        } catch {
                            print(error)
                        }
                    }
                Text("\(firstItem.countnum)").foregroundColor(.green)
            }
        } 
    }
}

EDIT-1:将新的 CountNum 添加到 add 按钮中的 CoreData 示例代码。

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc
    @FetchRequest(sortDescriptors: []) var countnum: FetchedResults<CountNum>
    
    var body: some View {
        Button(action: {add()}) { Text("add new CountNum").foregroundColor(.green) }
        .padding(.top, 50)
        List {
            ForEach(countnum) { item in
                HStack {
                    Text("++")
                        .onTapGesture(count: 2) { increment(item) }
                    Text("\(item.countnum)").foregroundColor(.blue)
                    Text("delete").foregroundColor(.red)
                        .onTapGesture { delete(item: item) }
                }
            }
        }
    }
    
    func increment(_ item: CountNum) {
        item.countnum += 1
        save()
    }
    
    func add() {
        let countnum = CountNum(context: moc)
        countnum.countnum = 0
        save()
    }
    
    func delete(item: CountNum) {
        moc.delete(item)
        save()
    }
    
    func save() {
        do { try moc.save() } catch { print(error) }
    }
    
}