我有一個包含用於進行Web調用的字典的類。基本上,鍵值對用於創建將在網絡調用需要任何值時發佈到URL的數據。這個對象類是使用JSON設置的。NULL字典未計爲NULL
我有一個方法,它需要這個類的對象,並使用它來設置網絡調用。我的問題是,如果沒有參數是必需的,那麼字典設置爲null這是很好,這是我想要的,但由於某種原因,當我做一個if語句來檢查字典是否爲空,它是擊中else聲明它不是null。方法是這樣的
-(void)webCall :(WebServiceCall *)webCall_p
{
//Creates a dictionary from the one stored in the WebResponse Class
NSMutableDictionary *dict = [[webCall_p getWebServiceResponse] getVariablesByRegexMap];
NSLog(@"%@", dict);
}
當我把它打印出來,我得到這個
<null>
然而,如果我把一個if語句來檢查它是否是空像這樣
if(dict == NULL)
{
NSLog(@"NULL");
}
else
{
NSLog(@"Not NULL");
}
它說不是空。如果我嘗試使用字典計數命令,像這樣
NSLog(@"%i", [dict count]);
的應用程序崩潰,並提出了這個錯誤
- [NSNull計數]:無法識別的選擇發送到實例0xaf8678 2012年11月23日11:48:44.005測試[3403:14003] * 終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,原因是: ' - [NSNull計數]:無法識別 選擇發送到實例0xaf8678'
我不能爲我的生活弄清楚這一點。任何幫助將不勝感激
這一個偉大的工程,歡呼聲。我不明白的是爲什麼會發生這種情況,對於我班上的其他字典,通常的字典== nil方法工作正常,或[字典計數]有效,我不確定爲什麼這個特別的調用計數崩潰的應用程序 – AdamM
我不知道這個案件的細節,但我可以嘗試解釋一般。在某些情況下,對象不能爲零。對於這些情況,引入了「空」單例對象NSNull。它從NSObject繼承,因此完成了適當對象必須做的所有事情。但它代表着「無」的價值。如果有疑問,您需要返回相關文檔或者直接試用。大多數時候你會處理零/空,但有時NSNull來得心應手。 –
我的情況有點複雜,我使用JSON創建了一個相當大的框架,之前我沒有遇到過這個問題,所以我不確定我做了什麼不同。我將不得不對我的框架中的其他一些類進行進一步測試,以查看是否發生了相同的事情。至少我將知道如果我再次遇到此錯誤需要注意什麼,再次感謝您的信息! – AdamM