Альтернативы NSMutableDictionary? - PullRequest
0 голосов
/ 27 мая 2011

У меня есть 3 NSMutableDictionaries, которые содержат данные для 3 отдельных UITableView.Когда значение проверяется в одном из UITableView, я хочу сохранить это значение, поэтому в зависимости от различных значений, которые проверяются из разных таблиц, я могу сгенерировать ответ на следующей странице.Я подумал, что, возможно, я мог бы создать новый NSMutableDictionary, который имеет все возможные варианты выбора, а затем, когда пользователь нажимает на флажок, сообщить моему newNSMutableDictionary, что это значение было выбрано.Но я не думаю, что это работает так, потому что это пара ключ-значение.Мне было интересно, есть ли альтернативы этому, или кто-то имел хороший способ хранения этой информации?Спасибо.

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

Вместо этого вы можете попробовать один NSMutableArray из выбранных NSIndexPath объектов. Таким образом, у вас будет достаточно легкий объем памяти (ленивая загрузка), и если вам нужно получить фактическое значение ячейки, вы можете задать UITableView с -tableView:cellForRowAtIndexPath:

Или, что еще лучше, один NSMutableDictionary с одним ключом, являющимся tag конкретного табличного представления, обернутым в NSNumber, и значением, равным NSMutableArray выбранных путей индекса.

Чтобы получить выбранные пути индекса, было бы так просто:

NSArray *indexPaths = [selectedDict objectForKey:[NSNumber numberWithInt:tableView.tag]];

for(NSIndexPath *p in indexPaths) {
   UITableViewCell *cell = [tableView cellForRowAtIndexPath:p];
   //do something with cell...
}
0 голосов
/ 27 мая 2011

Я не уверен, правильно ли я понял вашу проблему.

Но, если ваши данные имеют «форму» дерева, вы можете подумать о сохранении информации таким образом.

  • Вы можете поместить словарь в свой словарь
  • Вы можете поместить свои данные в CoreData и использовать NSTreeController
0 голосов
/ 27 мая 2011

почему бы не сохранить все возможные выборы в NSDictionary, инициализировать его всеми выборами, которые может сделать пользователь.Когда пользователь делает выбор, добавьте этот элемент к «selectedItems» NSMutableDictionary.Таким образом, ваш NSMutableDictionary (который содержит выборки) будет когда-либо содержать только выделенные элементы, затем вы можете добавлять и удалять из этого словаря без необходимости изменять не изменяемый NSDictionary, содержащий выборки, которые может сделать пользователь ..?

...