如何在目标c中为整数或NSUIntegers创建数组?
问题是我想要一个我可以经常更改的数组(NSMutableArray?)但是当我尝试添加对象时:someInt或someNSUInteger我得到一个关于“没有强制转换”的警告,当该代码执行应用程序崩溃时。
设置此功能的最快方法是什么?我不知道阵列的大小。它应该是动态的。
答案 0 :(得分:5)
NSUInteger只是一个typedef-ed unsigned int。 NSMutableArrays只接受对象,我认为这是你的问题。请尝试使用NSNumber。
答案 1 :(得分:3)
NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:1],[NSNumber numberWithInt:2], nil];
回读
int i = [[array objectsAtIndex:0] intValue];
或连续:
NSMutableArray *array = [NSMutableArray array];
for(int i =0; i<10; i++) {
NSNumber *number = [NSNumber numberWithInt:i];
[array addObject: number];
}
使用现代文字语法,您也可以这样做:
NSMutableArray *array = [@[@0, @1, @2] mutableCopy];
int i = [array[0] intValue];
答案 2 :(得分:3)
如果你只想引用一堆纯int常量,并希望避免NSNumber对象的开销而不需要修改你的数组,你可以尝试:
const int SOME_NUMBERS[] = {1,2,3};
稍后引用它,例如:
printf("\nSOME_NUMBERS[1] %i\n",SOME_NUMBERS[1]);