Альтернативы NSMutableDictionary?

#iphone #objective-c #uitableview #nsmutabledictionary

#iPhone #objective-c #uitableview #nsmutabledictionary

Вопрос:

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

Ответ №1:

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

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

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

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

for(NSIndexPath *p in indexPaths) {
   UITableViewCell *cell = [tableView cellForRowAtIndexPath:p];
   //do something with cell...
}
  

Комментарии:

1. разве он не должен быть изменяемым, если он содержит выборки, которые пользователь делает во время выполнения?

Ответ №2:

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

Ответ №3:

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

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

  • Вы можете поместить словарь в свой словарь
  • Вы можете поместить свои данные в CoreData и использовать NSTreeController