Property getting nil

1

I'm facing an issue where a property is getting nil with no explanation.

    NSMutableArray * lojas = [[NSMutableArray alloc] init];    
for (int x = 0; x < lojaResultado.count; x++) {

            NSDictionary * listaAtributos = [lojaResultado objectAtIndex: x];
            Loja * loja = [[Loja alloc] init];
            NSMutableArray * produtosLista = [[NSMutableArray alloc] init];
            [loja     setName: [listAtributos objectForKey: @"Loja"]];
            NSArray * produtosResultado  = [[NSArray alloc] initWithArray: [listaAtributos objectForKey: @"Produtos"]];

            for(int y = 0; y < produtosResultado.count; y++){
                NSDictionary * produtoAtributos = [produtosResultado objectAtIndex:y];
                Produto * produto = [[Produto alloc] init];
                [produto                               setNome: [produtoAtributos objectForKey:@"Nome"]];
                getNumber =    [produtoAtributos objectForKey: @"Tipo"];
                [produto                            setTipo: [getNumber intValue]];
                getNumber =    [produtoAtributos objectForKey: @"Tamanho"];
                [produto                          setTamanho: [getNumber intValue]];
                [produtosLista addObject: produto];
            }

            loja.produtos = produtosLista;
            [lojas addObject: loja];
    }

At this point [lojas addObject: loja]; property loja.produtos is still with the list, however after you make the second "loop" in the loop the loja.produtos property becomes nil .

Additional information:

Class property:

@property (strong, nonatomic) NSMutableArray * list;

The variable getNumber is of type NSDecimalNumber .

xCode Version: 6.1.1

iOS SDK Version: 8.1

    
asked by anonymous 20.05.2015 / 21:01

1 answer

0

I solved this problem using quick enumeration and using the autorelease concept, thereby discarding the alloc/init of the array

The code looks like this:

NSMutableArray * lojas = [[NSMutableArray alloc] init];
for (NSDictionary *listaAtributos in lojaResultado) {
    Loja * loja = [[Loja alloc] init];
    [loja setName:[listAtributos objectForKey: @"Loja"]];

    NSMutableArray * produtosLista = [NSMutableArray array];
    for(NSDictionary * produtoAtributos in [listaAtributos objectForKey: @"Produtos"]){
        Produto * produto = [[Produto alloc] init];
        [produto setNome:[produtoAtributos objectForKey:@"Nome"]];
        [produto setTipo:[[produtoAtributos objectForKey: @"Tipo"] intValue]];
        [produto setTamanho:[[produtoAtributos objectForKey:@"Tamanho"] intValue]];
        [produtosLista addObject:produto];
    }

    [loja setProdutos:produtosLista];
    [lojas addObject: loja];
}
    
22.05.2015 / 13:48