【问题标题】:iOS : application crashing for null values while displaying scrolling tableviewiOS:显示滚动表视图时应用程序因空值而崩溃
【发布时间】:2015-11-24 01:24:31
【问题描述】:

我收到来自服务器的JSON 响应,大多数值是NULL,我已经编写了这些代码行,假设它应该可以正常工作,但不知何故它又给了我同样的Null 错误, 请检查我的问题并帮助我..

 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>"

)

【问题讨论】:

  • 您的 if / else 语句给出相同的输出,不是吗?此外,如果您正在检查 null 但字段是 "&lt;null&gt;" 那么它们不是 null,它们是字符串。对不起,如果我不理解你的问题。至于拆分前三个字符串,可以使用componentsSeparatedByString,并检查逗号。
  • 您正在搜索键 my_images 的值。您提供的输出不是有效的 JSON。它只是一个字符串数组。您可以将您的 JSON 发布到问题中吗?
  • 是的,它是..它转到可变数组的末尾,但最后它崩溃了
  • 请粘贴完整的输出。我们需要查看您从 [data valueForKey:@"my_images"]; 获得的值或完整的 json 输出。
  • 查看更新的..完整值

标签: ios objective-c uitableview null


【解决方案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];
   }
}

【讨论】:

【解决方案2】:

检查 NULL 数据。希望这是 HelpFull。

 if ([str isKindOfClass:[NSArray class]]){
    return str;
}
else
{
    str = [str isEqual:[NSNull null]]?@"":[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 @"";
    }

【讨论】:

    【解决方案3】:

    你可以试试这个

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

    【讨论】:

    • item 不可能在 for-in 循环中成为 nil。您不能将nil 放入数组中,而nil 充当循环的终止符,因此即使您可以在任何索引中管理nil,它也只是作为循环的信号到了最后,不会用那个参数进入正文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多