[問題] 關於NSArray null問題

看板MacDev作者 (joogumo)時間11年前 (2013/04/17 14:05), 編輯推噓5(5010)
留言15則, 6人參與, 最新討論串1/1
小弟想判斷如果ProcessArray不等於null就執行 [self ProcessJSONDateFormat] 但是寫成這樣就出現Crash in Main thread Log: 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"); } 請問前輩有什麼方法可以避免這樣的錯誤呢??謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.104.78

04/17 14:08, , 1F
[NSNull null]
04/17 14:08, 1F

04/17 15:08, , 2F
小弟有使用[NSNull null]方式還是會有那個問題
04/17 15:08, 2F

04/17 15:09, , 3F
小弟詳細的問題 網址:http://stackoverflow.com/questio
04/17 15:09, 3F

04/17 15:11, , 4F
04/17 15:11, 4F

04/17 15:28, , 5F
ProcessArray 是空的還是nil ? 空的才能用[NSNULL null]
04/17 15:28, 5F

04/17 15:32, , 6F
if([ProcessArray isKindOfClass:[NSNull class]])
04/17 15:32, 6F

04/17 16:09, , 7F
Log 顯示為ProcessArray:()
04/17 16:09, 7F

04/17 17:39, , 8F
To wasihero:謝謝前輩我試過你的方式 還是無法正確判斷!
04/17 17:39, 8F

04/17 17:41, , 9F
不過不會出現-[NSNull length]錯誤!
04/17 17:41, 9F
試著改成wasihero前輩說的那樣,ProcessArray不管有無值都會跑else那部分 ProcessArray = [EventSheetDetailArray valueForKey:@"Process"]; if([ProcessArray isKindOfClass:[NSNull class]]) { NSLog(@"ProcessArray-1"); }else{ NSLog(@"ProcessArray-2"); } ※ 編輯: joojooman 來自: 111.243.104.78 (04/17 17:50)

04/17 17:55, , 10F
NSLog(@"ProcessArray:%@",ProcessArray);出現什麼?
04/17 17:55, 10F
回 kiii210:Log 是 ProcessArray:()

04/17 17:55, , 11F
之前好像有遇過類似問題
04/17 17:55, 11F

04/17 19:27, , 12F
真的是這串的錯嗎??
04/17 19:27, 12F

04/17 23:15, , 13F
Log出現ProcessArray == 0後才跳出-[NSNull length]錯誤
04/17 23:15, 13F

04/17 23:16, , 14F
所以應該是在NSLog(@"ProcessArray == 0");之後某個class
04/17 23:16, 14F

04/17 23:16, , 15F
或id有調用length方法時的地方
04/17 23:16, 15F
抱歉!小弟出現[NSNull length]錯誤是因為其他code的原因! ProcessArray = [EventSheetDetailArray valueForKey:@"Process"]; NSLog(@"ProcessArray:%@",ProcessArray); if (ProcessArray.count > 0 ) { NSLog(@"ProcessArray != 0"); [self ProcessJSONDateFormat]; }else{ NSLog(@"ProcessArray == 0"); } 以上這樣寫法沒錯~感謝各位的幫忙! ※ 編輯: joojooman 來自: 111.243.102.45 (04/18 13:31)
文章代碼(AID): #1HRZksNl (MacDev)