首页 > 解决方案 > 核心数据计数 SwiftUI

问题描述

当我在列表中添加新提醒时,我无法同时看到计数 + 1。但是当我重新运行程序时,我发现计数是正确的。

https://vimeo.com/545025225

    struct ListCell: View {
    var list : CDListModel
    @State var count = 0
    @State var isSelected: Bool = false
    var body: some View {
        HStack{
            Color(list.color ?? "")
                .frame(width: 30, height: 30, alignment: .center)
                .cornerRadius(15)
            Text(list.text ?? "")
                .foregroundColor(.black)
                .font(.system(size: 20, weight: .regular, design: .rounded))
            Spacer()
            Text(String(count))
                .foregroundColor(.gray)
                .onAppear{
                    DispatchQueue.main.async {
                        self.count = list.reminders!.count
                    }
                }
        }
    }
}

标签: core-datacountswiftuidispatch-queue

解决方案


如果 CDListModel 是 CoreData 实体,那么您只需添加以下内容:

@ObservedObject var list : CDListModel

还要删除计数的状态。

然后像这样显示计数:

Text(String(list.reminders!.count))

作为提示:我也不会使用强制展开。也许提供一个默认值而不是强制展开


推荐阅读