2016-11-13 1 views
-1

Я пытаюсь выполнить оператор if/else, где он проверяет, является ли массив пустым. Похоже, что первое условие оценивается и не выполняется, и поэтому оно перемещается в другое и выполняется. Это выход на экране (IOS):Если условие выполнено, но содержимое оператора if не работает

enter image description here

Имя, которое вы видите там, потому что заявление еще запускается на выполнение. Однако есть 3 других имени пользователя с десятками 0, которые не отображаются. Вот соответствующее условное:

NSArray *keyArray = [yy allKeys]; 
for(NSString *keyd in keyArray) { 
    NSLog(@"yy objectforkey *********: %@", [[yy objectForKey:keyd] debugDescription]); 

    if(![yy objectForKey:keyd]){ 

     NSMutableDictionary* entry = [NSMutableDictionary new]; 

     NSLog(@"inside yy object for key count 0 *****####***##*#*#*#"); 
     [tableData addObject:keyd]; 
     [matchesForUser addObject:@"0"]; 
     entry[@"username"] = keyd; 
     entry[@"matches"] = @"0"; 
     [entries addObject:entry]; 
    } 

    else { 
     NSMutableArray *locs = [[NSMutableArray alloc] initWithArray:[yy objectForKey:keyd]]; 
     //NSString *outerouter; 
     //NSNumber *outeroutermatches = [NSNumber numberWithInt:0]; 
     for(NSDictionary *outterar in locs) { 

      NSMutableDictionary* entry = [NSMutableDictionary new]; 

      NSLog(@"%@ outtererjar descriptiong ##(#(#(#(#(#(#(#(#(#((#", [outterar description]); 

      entry[@"username"] = keyd; 

      entry[@"matches"] = [outterar valueForKey:@"groupmatches"]; 

      if([entries count] > 0) { 
       for(int counter = 0; counter < [entries count]; counter++) { 
        if([[[entries objectAtIndex:counter] valueForKey:@"matches"] intValue] < [[entry valueForKey:@"matches"] intValue]) { 
         NSLog(@"GETTING IN IFFFFFF ABOOOVVEEEEE ******8888888*********"); 

         //NSMutableDictionary *stud = [[NSMutableDictionary alloc] initWithObjectsAndKeys:keyd, @"username", nil]; 
         [matchesForUser addObject:[outterar objectForKey:@"groupmatches"]]; 
         [tableData addObject:keyd]; 

         NSLog(@"%@ WHAT IS ENTRIES>>>!!!!??!?!?!", [[entries objectAtIndex:counter] valueForKey:@"username"]); 
         if([keyd isEqualToString:[[entries objectAtIndex:counter] valueForKey:@"username"]]) { 
          NSLog(@"GETTING IN IFFFFFF ******8888888*********"); 
          [entries removeObjectAtIndex:counter]; 
          [entries insertObject:entry atIndex:counter]; 
         } 
         else { 
          [entries addObject:entry]; 
         } 
        } 
        else { 
         [entries addObject:entry]; 
        } 
       } 
      } 
      else { 
       [matchesForUser addObject:[outterar objectForKey:@"groupmatches"]]; 
       [tableData addObject:keyd]; 
       [entries addObject:entry]; 
      } 
     } 
    } 
} 

_tableViewScore и tableData являются массивы, которые используются для заполнения UIScrollView (s). Код внутри оператора if должен выполняться каждый раз, когда найден пустой объект (это массивы). Остальное работает, поэтому вы видите имя пользователя со счетом, но похоже, что if не выполняется, когда массив равен null.

Когда я вывожу объект я проверка, пустой объект выглядит следующим образом:

yy objectforkey *********: <__NSArrayM 0x170454cd0>(

) 

Мне просто нужно, чтобы быть в состоянии определить, когда один из объектов, как это. Благодаря!

+0

я могу получить объяснение -1? – ewizard

ответ

2

Линия

![yy objectForKey:keyd] 

проверки

делает ключ keyd не существует в словаре

, который, конечно, всегда false, потому что все ключи, возвращаемые свойством allKeys являются гарантированно существует, а значение для существующего ключа не может быть nil by de FINITION.

Если вы хотите проверить, если массив пуст, вы должны написать

![[yy objectForKey:keyd] count] 

PS: Рассмотрим использовать более описательный переменную именование, а не yy

+0

Этот ответ имеет смысл, если упомянуть тот факт, что вы не можете сохранить значение «nil» для ключа в «NSDictionary». – rmaddy

+0

спасибо, ребята ... yah иногда я получаю поспешность с именами переменных - плохо пытаюсь и делаю лучше;) – ewizard

+0

Я думал, что вы правы .. но теперь я замечаю, что проблема возникает, когда я выхожу из приложения, а затем вхожу в приложение, затем попробуйте и получите доступ к табло .... если я уже в приложении и выберите табло, он отлично работает. – ewizard