Ios 迭代后数组设置为nil

Ios 迭代后数组设置为nil,ios,objective-c,Ios,Objective C,我遇到了一个问题,在迭代后属性变为nil: NSMutableArray * lojas = [[NSMutableArray alloc] init]; for (int x = 0; x < lojaResultado.count; x++) { NSDictionary * listaAtributos = [lojaResultado objectAtIndex: x]; Loja * loja = [[Loja alloc

我遇到了一个问题,在迭代后属性变为
nil

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

我在您的代码中看到
[produtosLista addObject:tires]但轮胎不是在方法块中创建的,它似乎在第二次迭代中被清除

由于您的实现看起来像是要添加产品,您可以尝试以下代码

更新:

我使用快速枚举更新了代码片段,删除了数组分配的
alloc/init
,并使用了自动释放概念

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

您是否
alloc/init
lojas
变量?添加到produtosLista的对象“轮胎”是什么?应该是produto吗?顺便说一下,我有时看到调试器在数组中显示错误的值:通常通过Xcode重启或计算机重启来修复。轮胎从哪里来?@MichaelL-永远不要相信调试器变量显示。改为在控制台中使用NSLog或
po
。我将对象
tires
更改为
produto
,错误仍然发生。@Gian使用一些objective c概念进行了更新,您可以尝试更新代码并更新您的发现吗。
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];
}