Objective c 如何将数组中的int值添加到NSNumber?
这是我的代码 我在数组中循环并添加到Objective c 如何将数组中的int值添加到NSNumber?,objective-c,nsnumber,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? } NSNumber*to
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?
}
NSNumber*totalValue=0;
NSMutableArray*项=[10,35,25];//只是为了演示
对于(int i=0;i
有人能帮我写这段代码吗?
NSNumber
是一个Objective-C类。与C++不同,运算符不能在ObjtoVc中超载,因此必须手动调用所有的东西。
NSNumber *totalValue = [NSNumber numberWithInt:0];
for(…) {
totalValue = [NSNumber numberWithInt:[totalValue intValue] + [[items objectAtIndex:i] intValue]];
}
您可能希望改用NSInteger
,这会更快(特别是对于大量项目:内存分配非常昂贵):
当您需要Objective-C对象时,如在数组、字典或编码器中,您应该只使用
NSNumber
。否则,请使用类似于NSInteger
、int
或double
的POD。首先,您可能可以使用KVC完成整个任务:
NSNumber *total = [items valueForKeyPath:@"@sum.integerValue"];
但要回答您最初的问题,NSNumber
是不可变的,这意味着您不能更改它或增加它的值。在循环的每次迭代中创建一个新的NSNumber
,既低效又浪费
您应该使用标准的
int
或NSInteger
来求和总数,然后如果需要,在最后将结果值转换为NSNumber
。也可以将中间值设为int
int temp = 0;
for(…) {
temp += [[items objectAtIndex:i] intValue];
}
NSNumber *totalValue = [NSNumber numberWithInt:temp];
感谢您的帮助。我强烈怀疑,虽然这更简洁/富有表现力,但执行起来会更慢。请在仪器中试用。然后决定在这种情况下性能是否重要。
int temp = 0;
for(…) {
temp += [[items objectAtIndex:i] intValue];
}
NSNumber *totalValue = [NSNumber numberWithInt:temp];