#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