我见过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;
答案 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>