2011-11-16 56 views
2

我正在使用一個NSMutableDictionary,並且它會根據它的第一個字母自動排序該鍵的接縫嗎?有什麼辦法可以禁用這個自動排序嗎?我嘗試更改這些鍵的位置,並在調用[NSMutableDictionary description]方法時仍遇到同樣的問題。NSMutableDictionary禁用排序

謝謝。

+2

爲什麼要對字典進行排序?字典的要點是,如果你給它一個關鍵字,它會給你關聯的對象,不需要排序/搜索。另外,我確定Apple已經優化了'NSMutableDictionary'對它的對象進行排序的方式,所以你不應該混淆它。 – msgambel

+1

如果對象的排序很重要,那麼也許你應該使用一個數組。 –

+0

我在這裏進行排序的關注點是因爲我將內容用作JSON表示形式,而我不確定這是否需要排序?如果情況並非如此,那麼我確定我在設置Post主體或標題時出錯。 – kforkarim

回答

6

它僅在輸出描述字符串時對鍵進行排序,它不會更改基於散列表的內存佈局。如果您通過它枚舉,它將不會被排序,因爲它旨在讓您快速訪問。請參閱this SO post

+0

好吧有道理,現在我的另一個問題來自JSON表示形式,因爲我發送兩個密鑰對值作爲「用戶名」和「密碼」,但在描述中顯示爲「密碼」,「用戶名」。因此,JSON甚至需要訂購嗎?從我記得它不應該是這樣,但仍然如此。我使用的是ASIHTTPRequest API,因此它對我來說非常奇怪,因爲我仍然無法獲得「Post」方法的身份驗證。 – kforkarim

+0

通常,JSON「對象」(映射到字典)中的值被認爲是無序的。依賴訂單的API最好是「作弊」,並且它不太可能,因爲API生成器使用字典型界面更容易,而該字典型界面將與訂單無關。 (當然,數組值是依賴於順序的。) –

+0

在NextStep JSON表示(至少是我熟悉的那些)中,排序JSON「數組」或「列表」存儲在NSArrays中,NSDictionaries表示順序無關的屬性。 – jbat100