2011-09-25 37 views
0

以下代碼不能按預期工作。我在創建視圖之後但在顯示之前設置了一個數組。我使用NSLog來測試數組是否已設置,但if/else將數組視爲空。objective-c無nil陣列在if/else語句中出現爲零

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    NSLog(@"Planlist is nil %d/has %d objects", (planListArr == nil), [planListArr count]); 

    if (planListArr == nil || [planListArr count] == 0) { ... } 
    else { 
     NSLog(@"Planlist is empty"); 
    } 
} 

日誌

2011-09-25 13:54:39.764 myVI[2938:13303] Planlist is nil 0/has 8 objects 
2011-09-25 13:54:39.765 myVI[2938:13303] Planlist is empty 

PlanList被定義爲

NSArray *planListArr; 

@property (nonatomic, retain) NSArray *planListArr; 
+0

你可以在代碼中定義數組嗎?最後一段代碼被稱爲「聲明」數組。 – chown

回答

4
if (planListArr == nil || [planListArr count] == 0) { ... } 
else { 
    NSLog(@"Planlist is empty"); 
} 

擴展,這變爲:

if (planListArr == nil || [planListArr count] == 0) { 
    ... 
} else { 
    NSLog(@"Planlist is empty"); 
} 

因此,基本上,它看起來像你有你的NSLog()聲明在錯誤的分支。

+0

+這是正確的。該數組不是空的或零,所以其他的得到evald爲真,和nslog打印。 – chown

+0

NSLog如何爲其他部分工作「Planlist爲空」如果planListArr爲零且其計數返回0 –

+1

@ Praveen-K如果數組爲「nil」或空,那麼「」Planlist爲空「'不會是記錄(在當前代碼中)。 –

2
(!plainListArray && [plainListArray count]>0) ? NSLog(@"PlainList array has %d items",[plainListArray count] : NSLog(@"Oops! Array is not been initialized or it has no items");