Скажите, пожалуйста, как мы можем иметь несколько значений для одного и того же ключа в NSMutableDictionary?
Когда я использую описанный ниже подход, значения заменяются на недавний.
В моем случае:
[dictionary setObject:forename forKey:[NSNumber numberWithint:code]];
[dictionary setObject:surname forKey:[NSNumber numberWithint:code]];
[dictionary setObject:reminderDate forKey:[NSNumber numberWithint:code]];
Когда я просматриваю содержимое словаря, Я получаю только RemderDate
для кода ключа. Здесь код одинаков для всех значений. Как избежать замены имени и фамилии на запланированного напоминания
.
Спасибо!
Похоже, вы используете код
в качестве ключа и хотите представить несколько значений на основе кода
. В этом случае вам следует либо:
Выделить все данные, связанные с кодом
, в отдельный класс (возможно, с именем Person
) и использовать экземпляры этого класса в качестве значений в словаре.
Используйте более одного уровня словарей:
NSMutableDictionary * dictionary = [NSMutableDictionary dictionary];
NSMutableDictionary * firstOne = [словарь NSMutableDictionary];
[firstOne setObject: имя forKey: @ "имя"];
[firstOne setObject: фамилия forKey: @ "фамилия"];
[firstOne setObject: ReminderDate forKey: @ "ReminderDate"];
[словарь setObject: firstOne forKey: [NSNumber numberWithInt: code]];
// повторяем для каждой записи.
Я не думаю, что вы понимаете, как работают словари. Каждый ключ может иметь только одно значение. Вам понадобится словарь словарей или словарь массивов.
Здесь вы создаете словарь для каждого человека, а затем сохраняете его в своем главном словаре.
NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:
forename, @"forename", surname, @"surname", @reminderDate, "@reminderDate", nil];
[dictionary setObject:d forKey:[NSNumber numberWithint:code]];