在我的应用程序中,我使用 coredata 来存储大量联系人。我需要知道所有名字及其响应计数。例如,如果数据集包含六个人:比尔盖茨、比尔乔丹、比尔克林顿、迈克乔丹、迈克乔布斯、汤姆克林顿。我需要得到结果:Bill 计数为 3,Mike 计数为 2,Tom 计数为 1。
如果我试试这个:
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"firstName"];
[fetchRequest setResultType:NSDictionaryResultType];
[managedObjectContext executeFetchRequest:fetchRequest error:nil];
然后我只能得到 3 个具有名字值的字典。但我无法计数。如果我使用默认结果类型,我将获得六个托管对象。迭代循环以获取名字并计算其计数需要额外的时间成本。
所以我的问题是,如何尽可能快地获取特定属性的值及其计数?非常感谢。
顺便说一句,我也尝试使用NSFetchResultController
keyNamePath,并尝试获取部分信息。但是当有很多部分时,速度很慢。它比我得到所有排序的 managedObject 并自己计算属性要慢。