从数组中添加两个整数

Adding two integer numbers from array

想象一下下面的代码:

    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@200, @100, nil];
    
    NSInteger n1 = (NSInteger)[arr objectAtIndex:0];
    NSInteger n2 = (NSInteger)[arr objectAtIndex:1];
    NSInteger r = n1 + n2;
    
    NSLog(@"n: %lid", r);

我得到的结果是:-4309586476825365866d,预期结果是:300

我还尝试评估调试器中的各个表达式,以检查从数组中读取值时得到的结果,如下所示:po (NSInteger)[arr objectAtIndex:0]。这显示了正确的数字,但在尝试将它们相加时:po (NSInteger)[arr objectAtIndex:0] + (NSInteger)[arr objectAtIndex:0],生成了无效结果。

知道为什么吗?我是 Objective-C 的新手,因此感谢任何我可以获得有关该问题的更多信息的来源。

您不能 NSNumber 转换为NSInteger。你必须打电话给 integerValue.

而且 10 多年来有更方便的数组文字语法以及更方便的索引订阅语法

NSArray *arr = @[@200, @100];

NSInteger n1 = [arr[0] integerValue];
NSInteger n2 = [arr[1] integerValue];
NSInteger r = n1 + n2;

NSLog(@"n: %ld", r);

对于字符串格式,请使用 id,但不能同时使用两者。