SwiftUI从Core Data实体中获取总项目(SQL术语中的行)计数[重复]

Posted

技术标签:

【中文标题】SwiftUI从Core Data实体中获取总项目(SQL术语中的行)计数[重复]【英文标题】:SwiftUI get total item (row in SQL terms) count from Core Data entity [duplicate] 【发布时间】:2022-01-01 12:53:34 【问题描述】:

使用 SwiftUI (2021) XCode 13.1 / ios 14.5+ 和 Core Data,我试图在实体中获得最有效的总数。

从 SQL 的角度来看,这就像从表中获取总行数。

实体永远不会包含许多“行”,可能永远不会超过 40。

我已经在 Google 上搜索了很多示例(包括这里),但有些是旧的,而且大多数都不起作用。这似乎与 countForFetchRequest 有关,但我不是 100% 确定。

我已经配置了只包含一个 id 字段和一个文本字段的容器和实体。

我还是 Core Data 的新手,所以希望我的术语是正确的,但是从各种示例中我得出了这个结论。 (注意我需要在应用关闭后保留数据)。

import CoreData

class FooCoreDataService 
    
    private let container: NSPersistentContainer
    private let containerName: String = "FooCoreDataModel"
    private let entityName: String = "FooEntity"
    
    init() 
    
        container = NSPersistentContainer(name: containerName)
    
        container.loadPersistentStores  (_, error) in
            if let error = error 
                print("Error loading Core Data! \(error)")
            
        
        
    
    
    // Get total item ('Row') count of FooEntity 
    func getFooCount() -> Int 
        
        var countOfItems: Int = 0
        
        // NOT SURE WHAT GOES HERE
        
        let fetchRequest = NSFetchRequest ????
        
        // SOMETHING TO DO WITH countForFetchRequest ????
        
        
        return countOfItems
    


【问题讨论】:

欢迎来到 SO - 请使用 tour 并阅读 How to Ask 以改进、编辑和格式化您的问题。如果没有Minimal Reproducible Example,就无法帮助您进行故障排除。 【参考方案1】:

这是你需要的吗?

static func getFooCount() -> Int 
   let object = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
   let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Product")
   let countOfItems = try! object.count(for: fetchRequest)
   return countOfItems

【讨论】:

以上是关于SwiftUI从Core Data实体中获取总项目(SQL术语中的行)计数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 将 Core Data 实体读入 []

SwiftUI Core Data 删除实体的相关数据

从 Core Data 非标量属性更新 SwiftUI 视图

SwiftUI Core Data 在 DetailView 中绑定 TextFields

Core Data 更改时更新 Swiftui 视图

SwiftUI 和 Core Data:基于用户输入获取