gpt4 book ai didi

IOS Swift Core Data 如何在 propertiesToFetch 中添加不在 propertiesToGroupBy 中的字段

转载 作者:IT王子 更新时间:2023-10-29 05:53:48 26 4
gpt4 key购买 nike

需要帮助。

我的表中有 4 个字段:

  • 电子邮件
  • 留言
  • 阅读
  • date_received

我要选择email , message (recent) , date_received, and unread messages

这是我的预期结果:

测试@email.com |测试留言 | 2015-02-27 | 28test2@email.com |测试消息2 | 2015-02-29 | 2

这是我当前的代码:

let fetchRequest:NSFetchRequest = NSFetchRequest()

if let entityDescription:NSEntityDescription = NSEntityDescription.entityForName("Message", inManagedObjectContext: managedObjectContext){
fetchRequest.entity = entityDescription
}

fetchRequest.propertiesToFetch = ["email","message","read","date_received"]
fetchRequest.propertiesToGroupBy = ["email"]
fetchRequest.resultType = .DictionaryResultType
fetchRequest.returnsObjectsAsFaults = false

let items:NSArray = managedObjectContext .executeFetchRequest(fetchRequest, error: nil)!

输出:

20 18:24:51.639 JPtxt[33368:1345477] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'SELECT clauses in queries with GROUP BY components can only contain properties named in the GROUP BY

最佳答案

只需使用通常的 NSManagedObjectResultType 获取消息(您无需指定)。然后通过 KVC 获取计数(两种解决方案都经过测试):

let count = (result.filteredArrayUsingPredicate(
NSPredicate(format: "read = NO")) as NSArray).count

一种非标准但可能更简洁的方法是利用 bool 值存储为 1 和 0 的事实

let count = result.count - result.valueForKeyPath("@sum.read")!.integerValue

关于IOS Swift Core Data 如何在 propertiesToFetch 中添加不在 propertiesToGroupBy 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29166047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com