Остановить NSDictionary от сортировки своих предметов - PullRequest
5 голосов
/ 21 марта 2012

У меня есть этот код

NSDictionary *tempDict = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:@"authorId","authorName","authorDescription",@"image",nil] forKeys:
[NSArray arrayWithObjects:@"id",@"name",@"desc",@"image",nil]];
NSLog(@"%@",[tempDict description]);

и вывод

desc = authorDescription;

id = authorId;

image = image;

name = authorName;

Вы видите, что словарь сортируется по ключу в алфавитном порядке по некоторым причинам.Это плохо для меня, потому что мне нужно добавить этот словарь в список, а в этом списке уже есть несколько словарей с несортированными ключами.Так как же мне избежать этой сортировки?

Ответы [ 2 ]

6 голосов
/ 21 марта 2012

Сортировка выполняется из-за [NSDictionary description], который используется NSLog.Это не принципиальная особенность NSDictionary.Если вы получаете доступ к ключам с помощью быстрого перечисления или [dictionary allKeys], вы не найдете их отсортированными.

Но, к вашему основному вопросу, если то, что вы хотите, является "несортированным" (случайным), то "отсортированный" являетсятолько одна из возможных случайных последовательностей.Если вы действительно хотите не отсортировать, то сортировка не должна иметь значения, потому что это подмножество.

Если сортировка имеет значение, то вы не имеете в виду «несортированный», вы подразумеваете «какой-то другой отсортированный порядок, такой как порядок вставки»."Если вам нужно как-то отсортировать NSDictionary, вам нужно навязать это, преобразовав его в NSArray.

2 голосов
/ 21 марта 2012

Это не отсортировано.Отображается в произвольном порядке.Добавьте еще несколько предметов, и вы, вероятно, увидите изменение порядка.

(Возможно, что внутренне хранилище по какой-то безумной причине фактически отсортировано, но с этим ничего не поделаешь.)

...