0

如何避免这个崩溃错误!主线程日志中的崩溃是

ProcessArray:()
ProcessArray == 0
-[NSNull length]: unrecognized selector sent to instance 0x3c4e1090

我的代码:

ProcessArray = [EventSheetDetailArray  valueForKey:@"Process"];
NSLog(@"ProcessArray:%@",ProcessArray);

if (ProcessArray.count > 0 ) {
    NSLog(@"ProcessArray != 0");
    [self ProcessJSONDateFormat];
}else{
    NSLog(@"ProcessArray == 0");
}

下面我换评委!

id value = [EventSheetDetailArray valueForKey:@"Process"];
if ( ![[NSNull null] isEqual:value] )
{
    ProcessArray = value;
    NSLog(@"1111111");
}else{
    NSLog(@"2222222");
}

但始终运行 NSLog(@"1111111") 这一行!不管是否有任何价值!

4

4 回答 4

4

验证来自 [EventSheetDetailArray valueForKey:@"Process"] 的返回值

id value = [EventSheetDetailArray valueForKey:@"Process"];
if ( ![[NSNull null] isEqual:value] )
{
    ProcessArray = value;
}

或者

id value = [EventSheetDetailArray valueForKey:@"Process"];
if ( [value isKindOfClass:[NSArray class]] )
{
    ProcessArray = value;
}

那么你可以调用 NSArray 成员函数,不要只是假设它是 NSArray..

于 2013-04-17T04:01:56.727 回答
0

答案其实很简单。

if([ProcessArray count] != [NSNULL NULL]) {
    if (ProcessArray.count > 0 ) {
      NSLog(@"ProcessArray != 0");
     [self ProcessJSONDateFormat];
    }else {
      NSLog(@"ProcessArray == 0");
    }
}else {
      NSLog(@"NULL...insert some value");
}
于 2013-04-17T07:17:28.780 回答
0

如果你的数组是空的,那么你不能检查计数,否则它会崩溃。我遇到了同样的问题。只需使用“if(!(array==nil))”。当你的数组为空时这是真的,否则它会移至其他部分。

于 2014-11-27T10:47:13.557 回答
0

对不起!我找到了错误的原因,因为我的其他代码有错误,导致主线程崩溃-[NSNull length]原因!

于 2013-04-18T05:39:16.220 回答