エンティティ "DIcome" にクエリを実行して属性 "credit" を合計したいのですが、今日と等しい "daystamp" 属性を持つ全体のみが必要です。次のコードは私を近づけますが、クレジットの合計 DIncome 属性をビュー コントローラーのラベルに出力するためにこのコードを終了する方法がわかりません。
これが私が得たものです。
//Get today date
NSDate *dateSelect = [NSDate date];
//formate today date as day only "dd"
NSDateFormatter *dfdd = [[NSDateFormatter alloc]init];
[dfdd setDateFormat:@"dd"];
NSString *formattedDatedd = [dfdd stringFromDate:dateSelect];
//Fetchrequest
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"DIncome" inManagedObjectContext:context];
[request setEntity:entity];
// Specify that the request should return dictionaries.
[request setResultType:NSDictionaryResultType];
// Create an expression for the key path.
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"credit"];
NSExpression *sumExpression = [NSExpression expressionForFunction:@"sum:" arguments:[NSArray arrayWithObject:keyPathExpression]];
// Create an expression description using the minExpression and returning a date.
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
// The name is the key that will be used in the dictionary for the return value.
[expressionDescription setName:@"sumCredit"];
[expressionDescription setExpression:sumExpression];
[expressionDescription setExpressionResultType:NSDateAttributeType];
// Set the request's properties to fetch just the property represented by the expressions.
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
// Execute the fetch.
NSError *error = nil;
NSArray *objects = [context executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
}
else {
if ([objects count] > 0) {
NSLog(@"Credit Sum: %@", [[objects objectAtIndex:0] valueForKey:@"sumCredit"]);
self.dayDisplayLabel.text = sumExpression;
}
}
質問の 2 番目の部分では、クレジットの合計を dayDisplayLabel に設定する必要があります。NSString を NSExpression に割り当てる互換性のないポインタであるため、これは機能しません。
self.dayDisplayLabel.text = sumExpression;
これを正しくするにはどうすればよいですか?