如何将数组中的int值添加到NSNumber?

Har*_*ode 2 objective-c nsnumber

这是我的代码

我循环遍历数组并添加到NSNumber.

NSNumber *totalValue = 0; 
NSMutableArray *items = [10, 35, 25]; // Just for demo
for (int i=0; i < items.count; i++)
{
    totalValue = totalValue + [items objectAtIndex:i] // How do I add the totalValue?
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我这个代码吗?

小智 9

NSNumber是Objective-C类.与C++不同,运算符不能在Objective-C中重载,因此您必须手动调用所有内容.

NSNumber *totalValue = [NSNumber numberWithInt:0];
for(…) {
  totalValue = [NSNumber numberWithInt:[totalValue intValue] + [[items objectAtIndex:i] intValue]];
}
Run Code Online (Sandbox Code Playgroud)

您可能想要使用NSInteger,这更快(特别是对于大量项目:内存分配很昂贵):

NSInteger totalValueInteger = 0; // no pointer, NSInteger is a POD!
for (…) {
  totalValueInteger += [[items objectAtIndex:i] integerValue];
}
NSNumber *totalValue = [NSNumber numberWithInteger:totalValueInteger];
Run Code Online (Sandbox Code Playgroud)

您应该只NSNumber需要 Objective-C对象时使用,例如在数组,字典或编码器中.否则,请使用POD NSInteger,intdouble.