2013-07-10 57 views
1

愚蠢的問題警告......我可能會被剝奪睡眠,但我似乎無法弄清楚這一點。valueForKey返回零

'當前' 是一個NSDictionary

if ([current valueForKey:@"name"] != nil) 
{ 
    NSLog(@"here %@", [current valueForKey:@"name"]); 
} 

這將打印

here John 
here Sam 
here <null> 
here <null> 
here Billy 

應該不是 '如果XX!=零' 阻止了空? 'name'存在於我的字典中,但名稱的值可能爲空。

+0

你有解決方案嗎? –

+1

'nil'和'null'或兩個完全不同的東西 – Popeye

回答

3

NSArrayNSDictionary不能包含零值。 NSNULL是專門爲零佔位符創建的。它可以放入收藏課,只佔用空間。

NSNull定義了一個單例對象,這意味着只有一個實例NSNull,但它可以在任意位置使用。

而且你需要檢查這樣的....

if (current != nil || [current valueForKey:@"name"] != [NSNull null]) 
{ 
     NSLog(@"here %@", [current valueForKey:@"name"]); 
} 

,我相信你會得到這樣的輸出.....

輸出

here John 
here Sam 
here Billy 
+2

謝謝,但不應該是&&而不是||。 ?沒有與||一起工作,但似乎與&& – Jason

+0

你在這裏說什麼實際上是不正確的或至少有誤導。如果沒有匹配的鍵/值對,你可以在'NSDictionary'中調用'valueForKey'並得到'nil'。 – Rog

+0

現在我想我是對的... –

0

試試這個,

if ([current valueForKey:@"name"] != nil | [current valueForKey:@"name"]!=[NSNull null]) 
{ 
    NSLog(@"here %@", [current valueForKey:@"name"]); 
} 
0
if ([[current valueForKey:@"name"] length]!=0) 
{ 
    NSLog(@"here %@", [current valueForKey:@"name"]); 
} 

我認爲這會對您有所幫助。

+1

我會用這個。 –