0

我正在使用 coreData 插入一个 NSManagedObject 数组,在我成功插入第一个对象后,NSMutableArray 的第二个对象变为 nil 为什么会这样?这是我的代码的快照:

+ (void)insertCategoryUsingCategoryArray:(NSMutableArray *)categoryArray
{
    if(!categoryArray)
        return;
    for (int i=0;i<[categoryArray count]; i++) {
        DataCategory *temp=(DataCategory *)[categoryArray objectAtIndex:i];

        DataCategory *categoryInfo=(DataCategory *)[NSEntityDescription insertNewObjectForEntityForName:@"DataCategory" inManagedObjectContext:_sing.managedObjectContext];

        [categoryInfo setCategoryId:temp.categoryId];
        [categoryInfo setName:temp.name];
        [categoryInfo setImgSrc:temp.imgSrc];

        NSError *error;
        if (![_sing.managedObjectContext save:&error]) {
            NSLog(@"An error occured while saving! shit : %@", [error localizedDescription]);
        }
        categoryInfo=nil;
    }
}

当我进入插入函数时,我调试 categoryArray,所有对象都在那里,在第一次循环后 temp 出于某种原因变为 nil,有人知道为什么吗?

4

1 回答 1

0

categoryArray不应成为此方法的参数。在您的设置中,该方法被传递一个数组作为该方法私有的变量。一旦你离开方法,这个数组将包含什么是不可预测的,除非你返回一些东西。

相反,您应该有一个由视图控制器管理的 ivar。初始化 ivar

categoryArray = [NSMutableArray array];

inviewDidLoad然后使用这个变量,不要将数组传递给方法。

.

PS:您可以通过消除谩骂来改善您的编程风格。;-)

于 2012-05-03T10:34:22.443 回答