在我的應用程序中,我使用coredata來存儲一大組聯繫人。我需要知道所有的名字與他們的迴應計數。例如,如果數據集包含六個人:比爾蓋茨,比爾約旦,比爾克林頓,邁克喬丹,邁克喬布斯,湯姆克林頓。 我需要得到的結果:以計數2計數3比爾,邁克,湯姆計數1在coredata中使用setPropertiesToFetch時,如何獲得每個結果的計數?
如果我試試這個:
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"firstName"];
[fetchRequest setResultType:NSDictionaryResultType];
[managedObjectContext executeFetchRequest:fetchRequest error:nil];
那麼我只能拿到3字典中的價值名字。但我無法得到伯爵。 如果我使用默認的結果類型,我會得到六個管理對象。迭代循環來獲取名字並計算它的數量需要額外的時間成本。
所以我的問題是,如何儘可能快地獲取特定屬性的值和它的數量? 非常感謝。
順便說一下,我也嘗試使用NSFetchResultController
與keyNamePath,並嘗試獲取該部分的信息。但有很多路段時速度非常慢。它比我獲得所有已分類的managedObject並且自己計算屬性更慢。
非常感謝,添加新表格和關係將有所幫助。但是,如果有很多我想獲得和計算的屬性,我應該保留許多額外的表格。因此,如果coredata的fetchquest提供了一個API來獲取屬性的數量,我認爲解決方案會更好。 至於larget數據集,我測試了在iPhone4中,我有5000個managedObject和94個姓氏節,使用NSFetchedResultController需要7.7秒。但是,如果不使用分區,只需要0.4秒。 – beof
如果我遍歷已排序的managedObject並將數據截面爲我自己,則需要3.1秒。但是我認爲如果coredata可以通過它的數量直接獲取屬性,3.1秒就可以減少。 – beof