Property getting nil

Asked

Viewed 55 times

1

I’m facing a problem that a property is getting nil unexplained.

    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 time [lojas addObject: loja]; the property loja.produtos is still with the list, but after it will do the second "loop" in the property loop loja.produtos stays nil.

Additional information:

Property in class:

@property (strong, nonatomic) NSMutableArray * list;

The variable getNumber is the type NSDecimalNumber.

Version Xcode: 6.1.1

Version iOS SDK: 8.1

  • When you add tires in produtosLista, shouldn’t add produto? Where does that come from remove?

  • @Paulorodrigues Yes, it is produto was an error at the time that replaces some variable names for better understanding. I’ve edited.

  • small doubt, the property is even nil or an empty array?

  • @Dasilva the property itself is nil, the moment I add it to the array it is normal there, then it is nil. I found the solution just below.

1 answer

0


I solved this problem using the quick enumeration and using the concept self-reliance, thus discartando the alloc/init array

The code was as follows:

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];
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.