我需要在UITableView中跟踪部分中的行。为此,我想创建一个数组,在其中我在每个部分中放入一定数量的行。这个数组应该有一定的大小 - 所以我认为使用NSArray而不是NSMutableArray会更好。
我的问题是 - 如何用一定数量的NSInteger类型的对象初始化为0?我怎么能改变那个数组 - 在我特殊的情况下,在需要时增加每个项目的价值?
例如:
while (objects)
{
myArray.(object string's first letter transformed to int)++;
}
答案 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];
}