【发布时间】:2013-03-18 23:51:11
【问题描述】:
我正在使用基于核心数据的时间序列(实体/表),它由以下属性/列组成:
dateTime mc nd re
基于公式result = (mc + nd) / re我想计算每一行的结果,并将结果(日期时间+值)返回到一个数组中。
我尝试使用以下代码在数据库级别执行计算,但在我的结果数组中得到错误的结果(每行多个 dateTime 值,错误的计算结果)。但是,NSExpressionDescription 在 NSLogging 时会返回正确的公式。
您知道我的代码可能有什么问题吗?
NSString *divisorKeyPath = @"revenue"
NSExpression *marketCapExpression = [NSExpression expressionForKeyPath:@"mc"];
NSExpression *netDebtExpression = [NSExpression expressionForKeyPath:@"nd"];
NSExpression *divisorExpression = [NSExpression expressionForKeyPath:
divisorKeyPath];
NSExpression *evExpression = [NSExpression expressionForFunction:
@"add:to:"
arguments:@[marketCapExpression,netDebtExpression]];
NSExpression *divisionExpression = [NSExpression expressionForFunction:
@"divide:by:"
arguments:@[evExpression, divisorExpression]];
NSString *divisionExpressionName = @"division";
NSExpressionDescription *divisionDescription = [[NSExpressionDescription alloc] init];
divisionDescription.name = divisionExpressionName;
divisionDescription.expression = divisionExpression;
divisionDescription.expressionResultType = NSDoubleAttributeType;
NSFetchRequest *divisionRequest = [NSFetchRequest fetchRequestWithEntityName:
NSStringFromClass([SharePrice class])];
divisionRequest.propertiesToFetch = @[@"dateTime",divisionDescription];
divisionRequest.resultType = NSDictionaryResultType;
NSSortDescriptor *sortDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"dateTime" ascending:YES];
divisionRequest.sortDescriptors = @[sortDescriptor];
NSError *error;
NSArray *divisionResults = [self.managedDocument.managedObjectContext
executeFetchRequest:divisionRequest error:&error];
NSLog(@"results: %@",divisionResults);
【问题讨论】:
标签: ios objective-c sqlite core-data nsfetchrequest