Да, djhworld верен - объекты NSDictionary не возвращают записи в порядке их создания.
Я довольно новичок в Objective C и столкнулся с той же проблемой.Решение, которое я приготовил, позволило мне все еще использовать один NSDictionary, но перед его использованием я сортирую записи на основе ключа.В классе утилит я сортирую ключи и возвращаю отсортированный массив:
+(NSArray *) sortedKeysForDictionary:(NSDictionary *)dict {
NSArray *keys = [dict allKeys];
NSMutableArray *anArray = [NSMutableArray arrayWithArray:keys];
keys = [anArray sortedArrayUsingSelector:@selector(localizedCompare:)];
return keys;
}
Затем я просто запускаю ключи, вытаскивая их из словаря в порядке ...
-(void) processEntries {
NSArray *keys = [Utils sortedKeysForDictionary:myDictionary];
for (int i=0; i<keys.count; i++){
NSString *key = [keys objectAtIndex:i];
id dictEntry = [myDictionary valueForKey:key];
// process the entry here
}
}
Единственное предостережение в том, что вы должны использовать ключи, которые сортируются правильно.Я принял соглашение об использовании ключей в форме nnn: keyName, поэтому я могу сортировать их, но по-прежнему предоставлять удобочитаемые имена.например, 001: процесс XYZ.