2013-04-17 2 views
0

Как избежать этой ошибки аварии аварии в главном потоке Входе являетсяО NSArray ноль сбоит

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") эту линию! Независимо от того, какая ценность!

+3

Вам не нужно выделять-> инициализировать массив в этой реализации. ваш 'EventSheetDetailArray' возвращает' [NSNull null] ', а не массив –

ответ

4

Validate возвращаемое значение [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. .

+0

To andykkt: Я использую if (! [[NSNull null] isEqual: значение]), но лог-шоу - [NSNull length]: непризнанный селектор, отправленный в экземпляр 0x3c4e1090 – SimonKira

+0

To andykkt: SORRY! I Konw - [NSNull length]: нераспознанный селектор отправлен в экземпляр 0x3c4e1090, потому что есть другая ошибка кода! – SimonKira

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"); 
} 
+0

To anilMotwani: У этого [NSNULL NULL] есть ошибка! – SimonKira

0

К сожалению, я нашел причину ошибки, потому что мой другой кода есть ошибки, которые вызвали аварии основного потока - [NSNull длину] причину!

0

Если ваш массив пуст, вы не можете проверить его количество, иначе оно будет разбито. Я столкнулся с той же проблемой. Просто используйте «if (! (Array == nil))». Это верно, когда ваш массив пустой, иначе он переместится в другую часть.

Смежные вопросы