6

我得到错误对象不能为零。我正在使用 Web 服务,当我使用循环解析它时它崩溃并且发送输出-[__NSArrayM insertObject:atIndex:]:对象不能为零作为错误,因为我在NSMutableArray尝试解析的空白值上有空值。

我试图用这些方法修复:

(1) if([Array containsObject:[NSNull null]])  
(2) if([Array objectAtIndex:0  
(3) if([Array objectAtIndex:counter] == 0**

我的代码是,

if([[[node childAtIndex:counter] name] isEqualToString:@"Phone"]){

    if([phoneno containsObject:[NSNull null]]){
        phone.text = @"-";
    }
    else{
        NSString *str = [[node childAtIndex:counter] stringValue];
        [phoneno addObject:str];
        NSString *myString = [phoneno componentsJoinedByString:@","];
        [phone setText:myString];
        phone.text = [NSString stringWithFormat:@"%@",myString];
    }
}

这里,phoneno 是 NSMutableArray

4

5 回答 5

12

在将任何对象添加到其中之前,请确保您已初始化名为 phoneno 的数组...

NSMutableArray *phoneno=[[NSMutableArray alloc]init];

并停止向其中添加任何 nil 对象...

if(str) //or if(str != nil) or if(str.length>0)
  {
    //add the str into phoneno array.
  }
else
  {
     //add the @""
  }
于 2013-09-18T06:10:33.643 回答
5

你不能插入nil到一个NSArray或一个NSDictionary所以你必须添加一个测试。

if(str){
   [phoneno addObject:str];
}
于 2013-09-18T06:04:36.997 回答
2

在某些情况下,您在数组中插入 nil,因此当您尝试获取该值时,它会使应用程序崩溃。因此,请在将其插入数组之前检查该值。例如,如果值为 nil,那么您可以将空白字符串插入到数组中。

if (str == nil || [str isKindOfClass:[NSNull null]])
{
    [array addObject:@""];
}
else
{
    [array addObject:str];
}
于 2013-09-18T06:06:15.730 回答
0

您使用此实用程序方法来验证 nil//Nil/Null/NULL 检查:

-(BOOL)isObjectEmpty:(id)object
{
    return object == nil || ([object respondsToSelector:@selector(length)] && [(NSData *)object length] == 0) || ([object respondsToSelector:@selector(count)] && [(NSArray *)object count] == 0);
}
于 2013-09-18T06:22:37.567 回答
0
NSString *str = [[node childAtIndex:counter] stringValue];
if(str.length>0)
{
   [phoneno addObject:str];
}
于 2016-04-15T09:25:26.283 回答