我遇到一个问题,即迭代后属性变为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];
}
在迭代期间,我可以在调试模式下看到我的objetc loja
在方法setName
和正确的列表(loja.produtos = produtosLista
)上收到正确的名称。
将对象loja
添加到我的数组lojas
后,我可以看到正确的对象,但是当第二次迭代开始时,第一个数组位置的对象设置了其属性produtos
(数组)到nil
。
以前有人遇到过这个问题吗?或者有人可以说我做错了什么?
Loja .h
档案:
@property (nonatomic) NSString * name;
@property (strong, nonatomic) NSMutableArray * produtos;
答案 0 :(得分:1)
我在你的代码中看到[produtosLista addObject: tires];
但是在方法块中没有创建轮胎,它似乎在第二次迭代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];
}