我正在尝试使用一个名为_operationArray的数组,其中存储了NSNumber。我想取数组的最后两个元素并将它们加在一起。在下面的代码中,endObject应该是数组中的最后一个元素空间,secondToEndObject应该是倒数第二个元素空间。然后我尝试将这两个元素一起添加。没有错误或警告但是当我尝试在模拟器中运行并按下按钮时,模拟器关闭并打开xcode并说出有关线程的信息(我不明白)。
- (IBAction)addition:(id)sender {
NSUInteger endObject = [_operationArray count];
NSUInteger secondToEndObject = [_operationArray count] - 2;
NSUInteger firstNumber =[[_operationArray objectAtIndex:endObject] integerValue] ;
NSUInteger secondNumber = [[_operationArray objectAtIndex:secondToEndObject] integerValue];
_theResult = [NSNumber numberWithInteger:((signed)(firstNumber + secondNumber))];
}
就像我说的那样,我真的不明白这个问题,所以如果有任何其他信息需要解决,请告诉我。感谢任何帮助,谢谢!
答案 0 :(得分:1)
这样的东西似乎更接近你想要的东西。
- (IBAction)addition:(id)sender {
// You said the array holds NSNumbers, so that's what you are getting out of it
NSNumber *lastNumber = _operationArray.lastObject;
NSNumber *penultimateNumber = _operationArray[_operationArray.count - 2];
NSNumber *_theResult = @(lastNumber.integerValue + penultimateNumber.integerValue);
}
答案 1 :(得分:0)
[_operationArray count]
错误,你正在使用基数0索引,这意味着最后一项是[_operationArray count]-1;
此外,您应该始终检查是否
[_operationArray count] >= 2
以避免崩溃