2011-07-16 75 views
1

我在視圖控制器中有很多textfields(約20)。用戶填寫完文本字段(有些可能爲空)後,我創建ab NSDictionary並將其發送到我的數據中心類。該NSDictionary中,我創建看起來像這樣:NSDictionary - 避免nils

textfield1 -> textfield1_value 
textfield2 -> textfield2_value 
textfield3 -> textfield3_value 
textfield4 -> textfield4_value 

的事情是,無論何時在用戶離開領域的空白,一個nill投入的價值。這會導致NSDictionary突然/過早地被初始化(如果那是正確的話)。是否每20個textfield都檢查一個我唯一的選擇?我覺得有一個更好的方法。謝謝。

抱歉有關混淆。我初始化的NSDictionary這樣:

[NSDictionary dictionaryWithObjectAndKeys: obj1, key1, obj2, key2, ..., nil]; 
+0

你是什麼意思*「這會導致NSDictionary突然/過早地初始化」*? –

+0

我假設他使用initWithObjects:然後給出所有textfield_values作爲參數:任何值爲nil將「提前」結束參數列表。 –

回答

2

爲了存儲nilNSMutableDictionary,你應該[NSNull null]包起來,導致不能把nil

你會檢查方式。文本字段爲空,實際上取決於你的代碼,但檢查nil是強制性的,如果你打算存儲這樣的值

+0

我不知道NSNull。謝謝! – Damien

5

如果使用的setObject:forKey:方法,你應該是車eful不通過作爲值,這將引起NSInvalidArgumentException

如果使用的setValue:forKey:方法,設置作爲值實際上將刪除字典,節省了內存的關鍵。這種方法對於從字典中移除一個鍵(實際上是一個內存)在你完全不需要它的情況下將非常有用。如果你使用這種方法,你不必在文本字段中檢查零,這也節省了一些時間。