2012-12-19 59 views
1

我針對實體的聚集和代碼是:神奇紀錄:和聚集

NSPredicate *betweenInterval = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date < %@)", [interval.start value], [interval.end value]]; 

NSNumber * nbPoints = [OMSPointsEventEntity MR_aggregateOperation:@"sum:" onAttribute:@"nbPoints" withPredicate:betweenInterval]; 

return [nbPoints intValue]; 

而且NbPoints是零,我不知道爲什麼......

提示:屬性NbPoints在我的實體是一個NSNumber應該是一個int?

+0

你需要[interval.start值]嗎?我認爲日期可以通過...另一件事來檢查,以確保沒有聚合的謂詞返回數據...你可能會過濾掉所有內容而不知道它。 – casademora

+0

如果我使用此謂詞+ [fetchedObjects valueForKeyPath:@「@ sum.nbPoints」]執行MR_findall;我有我正在尋找的總和。 [interval.start值]是我自己的類,它返回一個NSDate。 –

回答

2

我不知道MR,但在標準Cord數據中,聚合函數前必須有@。也許你應該在MR文檔中查看這個。

...MR_aggregateOperation:@"@sum"... // ??? 

如果你可以得到所有的PointsEvent實體的數組,你可以自己後計算它的獲取:

NSNumber *sum = [fetchedObjects valueForKeyPath:@"@sum.nbPoints"]; 

對於屬性的數據類型,您的設置似乎是正確的:int32或類似或核心數據模型中的floatNSManagedObject子類中的NSNumber

+0

我沒有找到任何關於此的文檔,在這裏找到幾個鏈接(函數的代碼:https://github.com/magicalpanda/MagicalRecord/blob/master/MagicalRecord/Categories/NSManagedObject/NSManagedObject%2BMagicalAggregation.m,官方github頁面:https://github.com/magicalpanda/MagicalRecord) –

+0

好吧,恭喜您決定使用無證框架。你有沒有嘗試第二種解決方案? – Mundi

+0

它是工作thx! –