2015-09-08 44 views
1

我的應用程序中有一個核心數據模型,它由一些不同的日期組成。每個日期都有一個數量值。現在我想在一個查詢中獲得每個日期的總和。請注意,日期並不明確,這意味着有多個2015/01/05等等。核心數據中不同值的總和

我剛剛接觸到核心數據,並且非常努力地對待這些東西。任何想法如何實現這一點。

+0

您能否提供您的模型的更多細節 - 是否將建模日期模型化爲NSDate?如果是這樣,你是否刪除時間信息?怎麼樣? – pbasdf

+0

不是數據是字符串格式,並由年月份值組成,如:201509,201501 – user3687

+0

http://stackoverflow.com/questions/20637440/is-it-possible-to-use-group-concat-with-coredata/是相似的,並且具有更長的代碼樣本。但它沒有@ pbasdf的'@ sum'表達式。 –

回答

2

要做到這一點的一種方法是使用NSExpression來計算總和,propertiesToGroupBy將總和的範圍限制爲每個不同的日期。假設你的日期屬性被稱爲yearMonth,並要總結的值稱爲quantity

NSExpression *sumExp = [NSExpression expressionWithFormat:@"sum:(quantity)"]; 
NSExpressionDescription *sumED = [[NSExpressionDescription alloc] init]; 
sumED.name = @"sumOfQuantity"; 
sumED.expression = sumExp; 
sumED.expressionResultType = NSDoubleAttributeType; 
NSError *error; 
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"]; 
request.propertiesToFetch = @[@"yearMonth", sumED]; 
request.propertiesToGroupBy = @[@"yearMonth"]; 
request.resultType = NSDictionaryResultType; 
NSArray *results = [context executeFetchRequest:request error:&error]; 
NSLog(@"Sums of quantity by year/month are: %@", results); 

結果應該是字典的數組,每個有兩個鍵:「yearMonth」作爲最新的一個關鍵,而「 sumOfQuantity「作爲相應總和的關鍵字。