2015-05-20 2 views
-2

У меня есть проблема, когда атрибут обращается к 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. У кого-то была эта проблема раньше? Или кто-то может сказать, что я делаю неправильно?

Лох .h файл:

@property (nonatomic) NSString * name; 
@property (strong, nonatomic) NSMutableArray * produtos; 
+0

Был ли вы 'alloc/init' переменной' lojas'? – rmaddy

+0

Это не имеет никакого смысла: «объект в первой позиции массива имеет массив lojas, установленный на nil». И, как говорит rmaddy, как вы знаете, что lojas не ноль, прежде чем вы начнете? – Gruntcakes

+0

Да, да. Я вижу объект loja в массиве lojas после [lojas addObject: loja] – Gian

ответ

1

Я видел в вашем коде, что [produtosLista addObject: tires]; но шины не создаются в блоке методы, его кажется, что во второй итерации tires смывается.

как ваша реализация кажется, что вы хотите добавить продукт, можете ли вы попробовать этот код.

Update:

Я обновил фрагмент кода с помощью быстрого перечисления и удаляется alloc/init для выделения массива и использовать autorelease концепцию.

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

Я изменил свой объект 'tyres' на' produto', и ошибка все еще происходит. – Gian

+0

@Gian обновляется с некоторой объективной концепцией c, вы можете попробовать с обновленным кодом и обновить свои результаты. – deoKasuhal

+0

Это сработало, спасибо. – Gian

Смежные вопросы