ios - 如何计算属性中的记录?
问题描述
目前在 ios 中的核心数据有点挣扎,找不到在当前 Swift 版本中有效的答案。无论如何可以计算属性中的记录数吗?
let results = try managedContext.fetch(request)
print (results.count)
这只是给我实体中所有记录的结果,但我需要从单个属性中知道它。谢谢!
解决方案
我建议您编辑您的问题,为我们提供更多信息。
在没有您提供更多信息的情况下,根据我试图解释您的问题的最佳猜测提供此答案。
一些基本的术语来帮忙。
Apple 文档指出,您...
通过将对象描述为实体、将它们的属性添加为属性和关系、最后生成相应的 NSManagedObject 子类来继承更改跟踪和生命周期管理来对数据进行建模。
我可以建议您的问题写成这样更有意义:
是否可以计算与某个属性的某个值匹配的记录数?
如果我的猜测是正确的,您可以使用以下代码,注意:
- 确定的值是“要计数的属性值”;和
该属性是“testAttribute”。
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "TestEntity") let key = "testAttribute" // the entity attribute let value = "attribute value to count" // the attribute value let predicate = NSPredicate(format: "%K == %@", argumentArray: [key, value]) request.predicate = predicate request.resultType = .countResultType var results: Int = 0 do { results = try context.count(for: request) } catch { let fetchError = error print(fetchError) }
通过指定NSFetchRequestResultType
as .countResultType
,您要求您的 fetch 请求仅计算与谓词匹配的指定实体的托管对象的数量(其中“testAttribute”=“要计数的属性值”)。
这是一个非常有效的获取。
它不会将NSManagedObject
托管对象提取到内存中(例如via数组var results: [NSManagedObject]?
),
它确实只将托管对象的数量提取到内存中(例如NSManagedObject
via的数量var results: Int = 0
)。
推荐阅读
- java - JAVA类变成xml文件
- reactjs - 不变违规:未找到名称选项的视图配置(React Native)
- javascript - 安装扩展后 Opencart 快速结帐页面无法正常工作
- javascript - Jupyter:将单元格移动到笔记本顶部
- java - ServerSocket 如何能够接收 HTTP 请求?
- android - 如果在 onDestroyed 之后调用 onActivityResult 会发生什么
- php - 如何保护“用户上传”文件夹
- python - 方法如何透明地查看函数属性
- vb.net - 在 VB .net 中显示/隐藏/可见时遇到问题 它只在第一次工作
- python - 如何在 Windows 上的 Anaconda 环境中部署 python 程序?