初めまして:明けましておめでとうございます:-)
私がやろうとしていること
Core Data の 2 つの属性を分割し、これらの分割の平均を計算しようとしています。属性は、キー パス ( eur
、usd
、 などaud
) によって指定されます。
例: 次のデータ セットがあります。
date eur usd aud
------------------------------
2010-01-01 0.5 1.0 1.5
2010-01-02 0.6 1.1 1.6
2010-01-03 0.4 1.0 1.3
2 つの属性、たとえば eur / usd を次の結果で分割します...
divide eur / usd:
------------------
2010-01-01 0.5
2010-01-02 0.54
2010-01-03 0.4
...次に、これらの数値の平均を計算します(0.5 + 0.54 + 0.4)/3 = 0.48
私のコード
これらの計算を Core Data で直接実行したいので、次の式とフェッチ リクエストを作成しました。
NSExpression *fromCurrencyPathExpression = [NSExpression
expressionForKeyPath:fromCurrency.lowercaseString];
NSExpression *toCurrencyPathExpression = [NSExpression
expressionForKeyPath:toCurrency.lowercaseString];
NSExpression *divisionExpression = [NSExpression
expressionForFunction:@"divide:by:"
arguments:@[fromCurrencyPathExpression,
toCurrencyPathExpression]];
NSExpression *averageExpression = [NSExpression expressionForFunction:@"average:"
arguments:@[divisionExpression]];
NSString *expressionName = @"averageRate";
NSExpressionDescription *expressionDescription =
[[NSExpressionDescription alloc] init];
expressionDescription.name = expressionName;
expressionDescription.expression = averageExpression;
expressionDescription.expressionResultType= NSDoubleAttributeType;
NSFetchRequest *request = [NSFetchRequest
fetchRequestWithEntityName:NSStringFromClass([self class])];
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"date >= %@ AND date <= %@",startDate,fiscalPeriod.endDate];
request.predicate = predicate;
request.propertiesToFetch = @[expressionDescription];
request.resultType = NSDictionaryResultType;
NSError *error;
NSArray *results = [context
executeFetchRequest:request error:&error];
問題
ただし、アプリを実行すると、次のエラー メッセージでクラッシュします。
Unsupported argument to sum : (
"eur / usd"
コードの何が問題になっていますか? 2 つの計算を連鎖させ、Core Data で直接実行するにはどうすればよいですか?
ありがとうございました!