0

我試圖在覈心數據中進行一次提取,我按屬性日期的月份進行分組。核心數據中的strftime SQL函數

在SQL

SELECT  SUM(total) as value, 
      date as date, 
      strftime('%m-%Y', date) as convertDate 
FROM  table 
GROUP BY convertDate 

我看不出有什麼功能,我可以使用strftime。 有沒有辦法做到這一點NSFetchRequest,而不是NSFetchedResultController

+2

不,CoreData不具有的strftime或DATEPART相等。而它的groupby只適用於持久性屬性,而不是計算表達式。如果您想通過fetchRequest實現此目的,則必須爲計算的月份/年添加持久屬性,並確保它與日期保持同步。 – pbasdf

+0

這就是我所害怕的。我知道核心數據不是一個ORM,但我有點失望。謝謝 – Hugo

回答

-1

您可以通過使用NSExpressionDescription

爲通過分組隨着NSFetchRequest你可以看到this tutorial做這做這個stackOverFlow question

對於這裏的總和NSExpressionDescription添加到您的NSFetchRequest

NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init]; 
expressionDescription.name = @"sumOfAmounts"; 
expressionDescription.expression = [NSExpression expressionForKeyPath:@"@sum.total"]; 
expressionDescription.expressionResultType = NSDecimalAttributeType; 

對於我認爲您可以在獲取記錄時使用NSDateFormatter進行格式化的日期。

讓我知道這是有幫助:)

UPDATE

[fetch setPropertiesToFetch:[NSArray arrayWithObjects:statusDesc, expressionDescription, nil]]; 
[fetch setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]]; 
[fetch setResultType:NSDictionaryResultType]; 
NSError* error = nil; 
NSArray *results = [myManagedObjectContext executeFetchRequest:fetch 
                 error:&error]; 
+0

謝謝你的回答。我唯一的問題是在nsfetchrequest中按月分組。我不想在請求 – Hugo

+0

後分組,我認爲在教程中是這樣。看我的更新 –

+0

獲取是NSFetchRequest –