【发布时间】:2011-01-11 08:23:40
【问题描述】:
我发现我的应用程序在使用 iPhone OS 3.1.3 的 iPod Touch 上发生崩溃的用户:由于某种原因,在 CoreData 存储中使用“@count:”表达式会导致崩溃。以下是相关代码:
NSExpression *avgExpression = [NSExpression expressionForFunction:@"average:" arguments:[NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription *ed = [[NSExpressionDescription alloc] init];
[ed setName:@"avgScalar"];
[ed setExpression:avgExpression];
[ed setExpressionResultType:NSFloatAttributeType];
NSExpression *countExpression = [NSExpression expressionForFunction:@"count:" arguments:[NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription *ed2 = [[NSExpressionDescription alloc] init];
[ed2 setName:@"countScalar"];
[ed2 setExpression:countExpression];
[ed2 setExpressionResultType:NSInteger16AttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObjects:ed,ed2,nil]];
执行提取时,我收到以下崩溃错误:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -constantValue 仅为抽象类定义。定义-[NSKeyPathExpression constantValue]!'
如果我将获取限制为 avgExpression (@"average:"),一切正常。 @"count:" 表达式有些奇怪,据我所知,只有在 iPhone OS 3.1.3 的 iPod Touch 上。有什么想法吗?
我可以交替执行完整提取并使用关键路径运算符来获取我需要的平均值和计数。但是,我担心这种方法会更加昂贵。有人知道是吗?
【问题讨论】:
标签: objective-c ios core-data iphone-sdk-3.0 count