我只是想分享我有一个Core Data应用程序,包含以下内容:
每个按钮都是一个按钮,用户可以按下该按钮来过滤数据,例如(从左到右):全部、收件箱、存档、更多、好、坏、重要.您还会注意到,每个按钮都有一个计数器.
在我的视图模型中,我有一个函数来计算每个函数,在应用程序的onAppear()中调用该函数
func countItem() -> (countTotal: Int, countArchive: Int, countGood: Int, countEvil: Int, countImportant: Int) {
let request: NSFetchRequest<ThoughtEntity> = ThoughtEntity.fetchRequest()
request.predicate = NSPredicate(format: "thoughts != %@", "")
let items1 = (try? manager.container.viewContext.fetch(request)) ?? []
let countTotalPredicate = items1.count
request.predicate = NSPredicate(format: "isArchive == true")
let items2 = (try? manager.container.viewContext.fetch(request)) ?? []
let countArchivePredicate = items2.count
request.predicate = NSPredicate(format: "type CONTAINS %@", "good")
let items3 = (try? manager.container.viewContext.fetch(request)) ?? []
let countGoodPredicate = items3.count
request.predicate = NSPredicate(format: "type CONTAINS %@", "evil")
let items4 = (try? manager.container.viewContext.fetch(request)) ?? []
let countEvilPredicate = items4.count
request.predicate = NSPredicate(format: "type CONTAINS %@", "important")
let items5 = (try? manager.container.viewContext.fetch(request)) ?? []
let countImportantPredicate = items5.count
return (countTotalPredicate, countArchivePredicate, countGoodPredicate, countEvilPredicate, countImportantPredicate)
}
该代码运行得足够好.
我想知道有没有更好的方法来做到这一点,而不是从数据库中提取5次?也许取东西的"成本"很低,所以没关系,但我想知道是否有更好、更有效的方法来做到这一点?