比较数组中的整数:(二进制表达式的操作数无效('NSUInteger *'(又名'unsigned int *')和'NSUInteger *')

时间:2014-04-12 18:25:04

标签: objective-c arrays type-conversion

我正在尝试使用一个名为_operationArray的数组,其中存储了NSNumber。我想取数组的最后两个元素并将它们加在一起。 在下面的代码中,endObject应该是数组中的最后一个元素空间, secondToEndObject应该是倒数第二个元素空间。然后我尝试

int singleSpace = 1;
int doubleSpace = 2;
NSUInteger endObject = [_operationArray count] - singleSpace;
NSUInteger secondToEndObject = [_operationArray count] - doubleSpace;
NSUInteger *firstNumber =[[_operationArray objectAtIndex:endObject] integerValue] ;
NSUInteger *secondNumber = [[_operationArray objectAtIndex:secondToEndObject] 
    integerValue];
/* These two lines defining first and second Number both have warnings saying: Incompatible integer to pointer conversion initializing 'NSUInteger *' (aka 'unsigned int *') with an expression of type 'NSInteger' (aka 'int')*/
_theResult = firstNumber + secondNumber;
/* This last line has a error saying: Invalid operands to binary expression ('NSUInteger *' (aka 'unsigned int *') and 'NSUInteger *')*/

我对Objective-C和Xcode非常陌生,所以我甚至不了解这些错误究竟意味着什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我猜你应该摆脱星号。

NSUInteger firstNumber =[[_operationArray objectAtIndex:endObject] integerValue] ;
NSUInteger secondNumber = [[_operationArray objectAtIndex:secondToEndObject] 
    integerValue];

integerValue返回NSUInteger(又名unsigned int),而不是指向它的指针。

顺便说一句,它返回NSInteger。这意味着如果返回的值为负,则可能会遇到问题。