0

coreData を使用して NSManagedObject の配列を挿入しています。最初のオブジェクトを正常に挿入した後、NSMutableArray の 2 番目のオブジェクトが 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このメソッドへの引数であってはなりません。あなたのセットアップでは、メソッドはメソッドにプライベートな変数として配列を渡されます。何かを返さない限り、メソッドを終了すると、この配列に何が含まれるかは予測できません。

むしろ、View Controller によって管理される ivar が必要です。でivarを初期化します

categoryArray = [NSMutableArray array];

この変数を使用しviewDidLoad、メソッドに配列を渡さないでください。

.

PS: 悪意をなくすことで、プログラミング スタイルを改善できます。;-)

于 2012-05-03T10:34:22.443 に答える