Использование NSUserDefaults для загрузки данных в зависимости от того, какая ячейка табличного представления нажата
Я хочу, чтобы мое приложение работало так же, как приложение "контакты" на iOS. Когда пользователь выбирает определенную TableViewCell, я хочу загрузить определенные данные.
Неважно, какая клетка нажата, "Джозеф, Ричард или Шеннон", возникает такая точка зрения:
Оба представления выглядят одинаково, но они просто отображают различную информацию. Поэтому я предполагаю, что мой вопрос: как я могу программно установить ключ @"cell1" @"cell2" и т. Д.... для каждой ячейки, используя NSUserDefaults? Но здесь есть одна загвоздка, я не знаю, сколько ячеек будет добавлено, поэтому я не могу жестко описать это. Как я могу создать ключ для каждой ячейки табличного представления для определения количества добавленных ячеек? Спасибо за помощь!
3 ответа
Возможно, вы не хотите использовать NSUserDefaults
.... это используется только для постоянной пользовательской информации, такой как настройки. Было бы лучше использовать Core Data для такого рода вещей.
Одна из идей, поскольку вы хотите пометить представления, заключается в использовании -[UIView setTag:]
или же UIView.tag
свойство / метод на UITableViewCell
во время вытеснения из камеры. С использованием UITableView
делегировать методы, вы можете обнаружить нажатие на ячейку, получить ее тег и посмотреть NSUserDefaults
или лучше ваша база данных.
Предпочтительным способом является ведение индексированной базы данных, исключение из очереди ячейки, а когда она нажата, перейдите на панель сведений с помощью индекса ячейки. Это гораздо более представительная модель программирования, чем разметка вида и использование NSUserDefaults
вытащить данные.
Если ваше сердце застряло на использовании NSUserDefaults
, попробуй это:
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
cellNumber = [prefs objectForKey:[NSString stringWithFormat:@"cell%d", index]];
Затем вы можете сохранить максимальный индекс, чтобы точно знать, сколько UITableViewCells
вам придется отображать.
Имейте в виду, что существует низкий предел хранения для NSUserDefaults
так что вы не сможете хранить всю свою информацию там. Вы можете узнать более подробную информацию здесь.
Надеюсь, это поможет!
Вы можете сделать это, создав NSMutableDictionary, который хранит пары ключ / значение для каждой ячейки, а не хранит его в NSUserDefaults.
NSMutableDictionay *dict = [[NSMutableDictionary alloc] init];
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"myKey"];
[dict release];
чем вы можете обновить словарь со значениями ячеек, когда вы хотите:
NSMutableDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"];
[dict setValue:aNameforThisCell forKey:[NSString stringWithFormat@"cell%d", indexPath.row]];