向NSMutableArray添加对象

4

我正在尝试将对象添加到NSMutableArray(categoriasArray)中,但迭代器无法完成此操作:

@synthesize categoriasArray;

for (int i = 0; i < [categories count]; i++) {

        categoria *cat = [[categoria alloc] initWithDictionary:[categories objectAtIndex:i]]; 
        [self.categoriasArray addObject:cat]; 
        cat=nil;

    }

在 for 循环之后,categoriasArray 没有对象了。
非常感谢。

你是否初始化了 categoriasArray - Evan Mulawski
categoriasArray是空的 - 你从未创建它。 - Hot Licks
可能是重复的问题:NSMutableArray addObject不起作用 - jscs
3个回答

7

在循环开始之前,请检查数组是否不是 nil

NSLog(@"%@", self.categoriasArray); // This will output null

for (int i = 0; i < [categories count]; i++) {
    // ...
}

你需要明白的是,合成属性并不会初始化它,它只会生成setter和getter方法。因此,为了解决你的问题,在循环之前(或在类的init方法中)初始化数组:
self.categoriasArray = [[NSMutableArray alloc] init];

另一种可能性是categories本身为nil或不包含任何项。为了检查这一点,在循环之前添加NSLog
NSLog(@"%@", self.categoriasArray); 
NSLog(@"%@", categories); 
NSLog(@"%d", [categories count]); 

for (int i = 0; i < [categories count]; i++) {
    // ...
}

谢谢ssh,是NSMutableArray没有初始化。 - roof

2

试一下这个

     for(categoria *cat in categoria){

        [self.categoriasArray addObject:cat];
        // check you go here or not
    }

@sch 这是快速枚举。您不需要计算数组。 - Bug

0
我建议养成使用自释放格式初始化数组的习惯,如下所示。这不仅敲击更少,而且对于内存管理目的也是一种良好的实践。当然,如果您正在使用ARC,则两者都可以。NSString和许多其他对象也是如此(例如,self.categoriasString = [NSMutableString string];)。
self.categoriasArray = [NSMutableArray array];

之后,您可以通过调用[self.categoriasArray addObject:cat];将对象添加到该数组中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接