2012-05-22 3 views
0

Я пытаюсь добавить NSMutableArray в другой NSMutableArray, изменяемый массив, заданный как экземпляр ivar, но я всегда получал массив arrayPlayoff пустым. Другая вещь, которую я обнаружил, заключается в том, что при отладке приложенного метода локальные переменные не отображаются в разделе переменных отладчика, даже выбрав «локальный» вариант.вопрос о добавлении NSMutablearray в другой NSMutablearray?

-(void)loadGamesPlayoffs{ 

    NSMutableArray *eli1 = [[NSMutableArray alloc] init]; 

    NSMutableArray *eli2 =[[NSMutableArray alloc] init]; 

    NSMutableArray *eli3 = [[NSMutableArray alloc] init]; 

    NSMutableArray *eli4 = [[NSMutableArray alloc] init]; 

    for (NSDictionary *eliminatoria in copaReyArray){ 

     int eli = [[eliminatoria valueForKey:@"eliminatoria"]integerValue]; 

     NSLog(@"eli %d", eli); 

     if (eli==1){ 

      [eli1 addObject:eliminatoria]; 

     } else if (eli==2){ 

      [eli2 addObject:eliminatoria]; 

     }else if (eli==3){ 

      [eli3 addObject:eliminatoria]; 

     } else if (eli==4){ 

      [eli4 addObject:eliminatoria]; 

     } 


    } 


    [arrayPlayOff addObject:eli1]; 

    [arrayPlayOff addObject:eli2]; 

    [arrayPlayOff addObject:eli3]; 

    [arrayPlayOff addObject:eli4]; 


    } 

many thanks 
+0

возможно дубликат [Невозможно добавить элементы в Ивар NSMutableArray] (http://stackoverflow.com/questions/7125326/cannot-add-items-to-an-nsmutablearray-ivar), http://stackoverflow.com/questions/1827058/nsmutablearray-addobject-not-working, http: //stackoverflow.com/questions/3683761/nsmutablearray-addobject-not-affecting-count –

+2

Похоже, вы не инициализируете 'arrayPlayOff', что вызывает проблему? – rishi

+0

Ребята, огромное спасибо! можете ли вы опубликовать свой ответ, чтобы проголосовать за вас? У меня была неправильная идея, что ivar не нужны для инициализации ..... – theomen

ответ

1

Если arrayPlayOff является переменной экземпляра можно использовать свойства, ваш .h должен выглядеть примерно так:

#import <UIKit/UIKit.h> 
@interface YourClassViewController : UIViewController{ 
    NSMutableArray *arrayPlayOff; 
    //Some other variables 
} 

@property (nonatomic, retain) NSMutableArray *arrayPlayOff; 

//Some other methods 

@end 

Затем в файле .m вы можете использовать:

@implementation YourClassViewController 

@synthesize arrayPlayOff; 

- (NSMutableArray *)arrayPlayOff{ 
    if(!arrayPlayOff){ 
    arrayPlayOff = [[NSMutableArray alloc] init]; 
    } 
    return arrayPlayOff; 
} 

//Your other methods 

//Overwrite the dealloc function so you don't have any memory leaks 
- (void)dealloc{ 
    [arrayPlayOff release]; 
    [super dealloc]; 
} 

@end 

Теперь у вас есть доступ к вашей переменной как

self.arrayPlayOff

и таким образом, вы можете быть 100% уверены, что ваша переменная всегда инициализируется.

Ваш метод может выглядеть следующим образом (также вы должны освободить свои другие NSMutableArrays, так как вы не используете после добавления их в массив arrayPlayOff):

-(void)loadGamesPlayoffs{ 

    NSMutableArray *eli1 = [[NSMutableArray alloc] init]; 

    NSMutableArray *eli2 =[[NSMutableArray alloc] init]; 

    NSMutableArray *eli3 = [[NSMutableArray alloc] init]; 

    NSMutableArray *eli4 = [[NSMutableArray alloc] init]; 

    for (NSDictionary *eliminatoria in copaReyArray){ 

     int eli = [[eliminatoria valueForKey:@"eliminatoria"]integerValue]; 

     NSLog(@"eli %d", eli); 

     if (eli==1){ 

      [eli1 addObject:eliminatoria]; 

     } else if (eli==2){ 

      [eli2 addObject:eliminatoria]; 

     }else if (eli==3){ 

      [eli3 addObject:eliminatoria]; 

     } else if (eli==4){ 

      [eli4 addObject:eliminatoria]; 

     } 


    } 


    [self.arrayPlayOff addObject:eli1]; 

    [self.arrayPlayOff addObject:eli2]; 

    [self.arrayPlayOff addObject:eli3]; 

    [self.arrayPlayOff addObject:eli4]; 

    //Releasing the NSMutableArrays 
    [eli1 release]; 
    [eli2 release]; 
    [eli3 release]; 
    [eli4 release]; 

}