2011-08-09 46 views
0

我正在從我們的Web服務器拉出座標列表。我將整個列表存儲爲一個NSDictionary。在我使用數據(lat,long,radius,name)時,我想用1或2個字段更新數據列表。有沒有辦法將這兩個項目插入到現有的字典?我可以插入一個對象到NSDictionary中嗎?

我唯一的想法是,我將不得不將數據加載到一個NSMutableDictionary中,以允許添加,並創建新的字典並用新的更新數據覆蓋現有的字典。希望得到更簡單或更清潔的方式,而不是貧民窟操縱它。提前致謝。

+1

我不認爲使用'NSMutableDictionary'將是*貧民窟索具*您的解決方案。這是可變字典的用途。事實上,這似乎比每次分配新字典來處理新數據集都要乾淨得多。 –

+0

我目前只是存儲所有的數據作爲NSDictionary,因爲我沒有添加任何東西,所以它工作正常。所以沒有多個字典或大量的分配。主要尋找可驗證的字典是我需要採取的路徑,並沒有更好的我可以/應該使用。謝謝。 –

回答

1

你的想法是正確的,你必須創建一個NSMutableDictionary,因爲NSDictionary不能被修改。

NSMutableDictionary *newDoc = [[NSMutableDictionary alloc] initWithDictionary:doc]; 

如果在NSDictionary中有任何不可變的數組或字典,則可能需要深度拷貝進行修改。

NSMutableDictionary *newDoc = (NSMutableDictionary *)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, doc, kCFPropertyListMutableContainers); 
+0

感謝您的信息。我將不得不深入研究我需要做的事情。我需要能夠添加項目而不破壞其中的現有數據。 –

+1

沒有數據會被破壞或丟失。您可以使用setValue或setObject添加新條目。如果您只是想添加條目,您也不需要深層副本。 – Patrick

3

docs

的NSDictionary的類聲明的編程接口到管理鍵和值的不可變協會對象 。

因此,NSDictionary是不可變的 - 您可能不會添加到它。使用NSMutableDictionary並不是不乾淨或「貧民區索具」......這是NSMutableDictionary的全部目的。

+0

感謝您的負面評價。我的問題並不意味着使用NSMutableDictionary是「貧民區索具」,只是尋找更好的解決方案,如果有的話。 –

+0

我很困惑...我沒有降低你的問題。你碰巧低估了我的回答? ;) – GarlicFries

+0

對不起,我感到困惑。別擔心。 –

相關問題