如何避免此崩溃错误!主线程日志崩溃
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”)这一行! 无论是否有任何价值!
答案 0 :(得分:4)
验证[EventSheetDetailArray valueForKey:@“Process”]的返回值
id value = [EventSheetDetailArray valueForKey:@"Process"];
if ( ![[NSNull null] isEqual:value] )
{
ProcessArray = value;
}
OR
id value = [EventSheetDetailArray valueForKey:@"Process"];
if ( [value isKindOfClass:[NSArray class]] )
{
ProcessArray = value;
}
然后你可以调用NSArray成员函数,不要只假设它是NSArray ..
答案 1 :(得分: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");
}
答案 2 :(得分:0)
抱歉!我找到了错误的原因,因为我的其他代码有错误,导致主线程崩溃 - [NSNull length]原因!
答案 3 :(得分:0)
如果您的阵列是空的,那么您无法检查计数,否则会崩溃。我遇到了同样的问题。只需使用" if(!(array == nil))"。当您的数组为空时,这是正确的,否则它将移动到else部分。