2015-11-24 2 views
0

Я получаю ответ JSON от сервера, большинство значений NULL, я написал эти строки кода, предполагая, что он должен работать нормально, но как-то он дает мне опять же Null ошибки, Просьба просмотреть мой вопрос и помочь мне ..
iOS: сбой приложения для нулевых значений при отображении прокрутки tableview

NSMutableArray * s = [data valueForKey:@"my_images"]; 
     NSLog(@"array is %@",s); 



     for (int i=0; i < [s count]; i++) 
     { 

      if (s[i] !=[NSNull null]) 
      { 
       NSLog(@"%@",s[i]); 

      } 

      else 
      { 

       NSLog(@"%@",s[i]); 

      } 

     } 


Мне нужно, чтобы получить расщепленные изображения на этом месте вместо слитых значений, Мой выход здесь ..

array is (
"mobile2.jpg,mobile1.jpg,mobile.jpg", 
"artificial.jpg,grass.jpg", 
"11.JPG,chair.JPG", 
"oc.jpg", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>", 
"<null>" 

)

+2

Ваши утверждения 'if' /' else' дают тот же результат, не так ли? Кроме того, если вы проверяете «null», но поля '' ", то они не' null', они строки. Извините, если я не понимаю ваш вопрос. Что касается разделения первых трех строк, вы можете использовать 'componentsSeparatedByString' и проверять наличие запятых. – Tim

+1

Вы ищете значение для ключа 'my_images'. То, что вы дали в качестве вывода, недействительно JSON. Это всего лишь массив строк. Можете ли вы опубликовать свой JSON на вопрос. – PK20

+0

да это .. он подходит к концу изменчивого массива, но в конце он сбой – magid

ответ

1

Вы должны проверить значение объекта не равно нулю, прежде чем добавить его в массив.

NSArray* s = [data valueForKey:@"my_images"]; 
NSMutableArray* data = [NSMutableArray array]; 
for (id object in s) { 
    if ([object isKindOfClass:[NSNull class]] == NO) { 
     [data addObject:object]; 
    } 
} 
+0

Есть намного более простой способ, поскольку мы можем просто вытащить объекты из словаря в качестве изменяемого массива: http://stackoverflow.com/q/9192301/2792531 – nhgrif

-1

и можно попробовать это

for (NSString *item in images){ 
    if (item && ![item isEqual:[NSNull null]]){ 
     // do something 
    } 
} 
+0

Невозможно, чтобы 'item' был' nil' во встроенном цикле. Вы не можете поместить 'nil' в массив, а' nil' служит терминатором для цикла, поэтому, даже если вы можете управлять «nil» в любом из индексов, он просто будет служить сигналом того, что цикл довел его до конца и не входил в тело с этим аргументом. – nhgrif

+0

правый, спасибо, что напомнил @nhgrif – Vian

0

Проверьте отсутствие данных .. Надеюсь, что это полезно.

if ([str isKindOfClass:[NSArray class]]){ 
    return str; 
} 
else 
{ 
    str = [str isEqual:[NSNull null]][email protected]"":[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    if ([str isKindOfClass:[NSNull class]] || [str isEqual:[NSNull null]] || [str isEqualToString:@"<null>"] || [str isEqualToString:@"(null)"] || [str isEqualToString:@""] || [str isEqualToString:@"0"]) 
    { 
     return @""; 
    } 
Смежные вопросы