如何将数组中的初始值设置为0

时间:2009-04-03 15:18:17

标签: objective-c

我需要在UITableView中跟踪部分中的行。为此,我想创建一个数组,在其中我在每个部分中放入一定数量的行。这个数组应该有一定的大小 - 所以我认为使用NSArray而不是NSMutableArray会更好。

我的问题是 - 如何用一定数量的NSInteger类型的对象初始化为0?我怎么能改变那个数组 - 在我特殊的情况下,在需要时增加每个项目的价值?

例如:

while (objects)
{
 myArray.(object string's first letter transformed to int)++;
}

4 个答案:

答案 0 :(得分:2)

如果数组是特定大小和所有常规整数(在您的示例中为NSInteger),为什么不使用简单的整数指针?例如:

- (id)init {
  if( (self = [super init]) ) {
    // assume this is an instance variable of type NSInteger *myArray;
    myArray = (NSInteger*)calloc(arraySize, sizeof(NSInteger));

    // Do any other initialization that you need
  }
  return self;
}

- (void)myMethod {
  // Do whatever you need
  while( objects ) { myArray[whatever]++; }
}

- (void)dealloc {
  free(myArray);
  [super dealloc];
}

如果您的要求需要一个简单的固定容量数组,所有数组都包含相同的原始类型,我认为简单的解决方案是最好的。如果数组的长度永远不会改变(即,您知道编译时的长度),您可以使用NSInteger数组作为实例变量而不是指针,这样您就不必处理分配内存或释放它。此外,在这种情况下,您将自动获得一个归零的数组。

答案 1 :(得分:1)

NSMutableArray *a = [[NSMutableArray alloc] init];
int i;

for (i = 0; i < ...; ++i)
    [a addObject:[NSNumber numberWithInt:0]];

答案 2 :(得分:0)

你必须像这样迭代整个数组:

for ( var key in list ) {
   list[key] = // Your new object here;
}

答案 3 :(得分:0)

当您需要更改数组时,您需要使用Mutable数组而不是不可变数组。

如果你需要初始化一个包含10个项目的数组,你可以写下:

NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:10];

for (NSUInteger i = 0; i < 10; i++) {
    [mutableArray insertObject:[NSNumber numberWithInt:0] atIndex:i];
}