增加NSArray中的NSNumber

时间:2012-12-28 20:52:25

标签: objective-c ios nsarray increment nsnumber

我见过this,但需要更简单的方法。

如果我有一个NSNumbers数组并且我想增加其中一个,我必须这样做?

[myMutableArray replaceObjectAtIndex:index withObject:[NSNumber numberWithInt:[(NSNumber *)[myMutableArray objectAtIndex:index] intValue] + 1]];

myArray = [myArray.mutableCopy replaceObjectAtIndex:index withObject:[NSNumber numberWithInt:[(NSNumber *)[myArray objectAtIndex:index] intValue] + 1]].copy;

如果您出于某种原因决定使用不可变数组。

我知道我总是可以使用一个int数组,但是如果有一个简单的方法可以做到这一点我很好奇。

另外,如果我需要在实现或完整文件(整个.m)中访问它而不使其全局化,我应该如何定义一个int数组?

只是把它放在我的实现/文件的顶部这么简单吗?

static int *myInt;

2 个答案:

答案 0 :(得分:3)

正如其他人所说,是的,你需要这么多步骤。使用文字,它可以更容易阅读:

myMutableArray[index] = @( [ myMutableArray[index] intValue] + 1 ) ;

你的第二个代码示例不起作用,因为replaceObjectAtIndex:withObject:返回void,而不是它所采取行动的NSMutableArray。您需要创建一个mutableCopy NSArray,然后replaceObject,然后将NSArray设置为NSMutableArray的copy

答案 1 :(得分:0)

我建议使用C ++ STL容器,而不是创建一个普通的int数组,如果你需要能够调整它。将实施文件的扩展名重命名为.mm,而不是.m

std::vector<int> numbers = { 2, 4, 6 };
numbers[1]++; // { 2, 5, 6 }

请记住包含容器的定义。

#import <vector>