Можно создать дубликат:
NSDictionary with ordered keysNSMutableDictionary элементов переупорядочения после вставки
Im используя XMPPFramework для прошивки, и Im довольно удивлён Seing что NSDictionary содержащих обитателей комнаты изменяет порядок его содержимое каждый раз, когда вставлен новый пользователь/элемент.
Вот выход, после каждой вставки.
<CFBasicHash 0xbccbd60 [0x1f02400]>{type = mutable dict, count = 2,entries =>
1 : <CFString 0xbcd90b0 [0x1f02400]>{contents = "4ee90610e4b08c62894a648c"} = <XMPPRoomOccupant: 0xbcd9360>
2 : <CFString 0xbe5a160 [0x1f02400]>{contents = "4eea53a6e4b08c62894a6c90"} = <XMPPRoomOccupant: 0xbca7cc0>
}
<CFBasicHash 0xbccbd60 [0x1f02400]>{type = mutable dict, count = 3,entries =>
0 : <CFString 0xbe60710 [0x1f02400]>{contents = "4ee8fca3e4b08c62894a6489"} = <XMPPRoomOccupant: 0xbe61370>
1 : <CFString 0xbcd90b0 [0x1f02400]>{contents = "4ee90610e4b08c62894a648c"} = <XMPPRoomOccupant: 0xbcd9360>
2 : <CFString 0xbe5a160 [0x1f02400]>{contents = "4eea53a6e4b08c62894a6c90"} = <XMPPRoomOccupant: 0xbca7cc0>
}
<CFBasicHash 0xbccbd60 [0x1f02400]>{type = mutable dict, count = 4,entries =>
0 : <CFString 0xbe5a160 [0x1f02400]>{contents = "4eea53a6e4b08c62894a6c90"} = <XMPPRoomOccupant: 0xbca7cc0>
4 : <CFString 0xbe71eb0 [0x1f02400]>{contents = "4f7ade44e4b09cb64dc33b90"} = <XMPPRoomOccupant: 0xbe72950>
5 : <CFString 0xbe60710 [0x1f02400]>{contents = "4ee8fca3e4b08c62894a6489"} = <XMPPRoomOccupant: 0xbe61370>
6 : <CFString 0xbcd90b0 [0x1f02400]>{contents = "4ee90610e4b08c62894a648c"} = <XMPPRoomOccupant: 0xbcd9360>
}
Как вы можете видеть в этом последнем вставке, он изменил порядок на 2 элемента, и он изменил свой индекс. Это нормально? Я посмотрел на код и его вставки с помощью:
[Оккупанты SetObject: жилец forKey: aNickName];
Мне нужны элементы для хранения в том порядке, в котором он был вставлен. И мне также нужно получить доступ к элементу через строку. Любая идея?
Благодаря
Дело в том, что каждый раз, когда элемент вставлен ли я использовать словарь для печати данных, поэтому, так как порядок меняется уже напечатанные данные не имеют смысла ... – subharb
@DavidShaikh Похоже, вы хотите определить порядок печатных данных, поэтому вам нужно отсортировать ключи, как описано. – trojanfoe
Но порядок, который мне нужно сохранить, - это то, как он был вставлен, а не в алфавитном порядке, который, как мне кажется, поддерживает . Первый элемент вставлен, и я печатаю первый элемент. Другой элемент вставлен, и я печатаю второй, но с изменением порядка, и Im фактически печатает первый элемент во второй раз. – subharb