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