我在返回的grades
,一个(私有实例)NSDecimalNumbers的NSMutableArray的所有元素的总和类编写方法正确值valueForKeyPath总和不返回
grades = [[NSMutableArray alloc] init];
我收到一个字符串格式化像 “(长度) - (值)(值)...”
(实施例:"3 - 90.5 85.2 89.6"
)
这是我的填充阵列
-(void) setGrades: (NSString *) list{
NSArray *arr = [list componentsSeparatedByString:@" "];
int i = 2; //start from 2 to ignore length and '-'
for (; i<[arr count]; i++)
{
NSString *temp = [arr objectAtIndex:i];
[grades addObject: [NSDecimalNumber decimalNumberWithString: temp]];
}
}
总和方法
-(double) getSum{
double sum = [[grades valueForKeyPath:@"@sum.doubleValue"]doubleValue];
return sum;
}
返回的东西完全不正确。例如,通过上面的示例数据,它返回0
。或者,如果我删除最后一个值(因此它将是"2 - 90.5 85.2"
),它将返回-1717986918
。在填充数组或其他方式时出现错误?我如何解决它?
你确定'grades'是空的,你开始将对象添加到它之前? – Aderstedt
是的,我在添加对象之前检查它是否为空,它仍然返回0。 –
为什么你使用'NSDecimalNumber'转换它们,使用'[NSNumber numberWithInteger:[temp integerValue]]',而你的值的另一个问题是,它将'-'视为值,而你用空间分割它们。 –