NSMutableDictionary с одним ключом, содержащим много значений в программировании Objective-C

Скажите, пожалуйста, как мы можем иметь несколько значений для одного и того же ключа в NSMutableDictionary?

Когда я использую описанный ниже подход, значения заменяются на недавний.

В моем случае:

[dictionary setObject:forename forKey:[NSNumber numberWithint:code]];
[dictionary setObject:surname forKey:[NSNumber numberWithint:code]];
[dictionary setObject:reminderDate forKey:[NSNumber numberWithint:code]];

Когда я просматриваю содержимое словаря, Я получаю только RemderDate для кода ключа. Здесь код одинаков для всех значений. Как избежать замены имени и фамилии на запланированного напоминания .

Спасибо!

9
задан Brett DeWoody 29 March 2018 в 08:43
поделиться

2 ответа

Похоже, вы используете код в качестве ключа и хотите представить несколько значений на основе кода . В этом случае вам следует либо:

  1. Выделить все данные, связанные с кодом , в отдельный класс (возможно, с именем Person ) и использовать экземпляры этого класса в качестве значений в словаре.

  2. Используйте более одного уровня словарей:

     NSMutableDictionary * dictionary = [NSMutableDictionary dictionary];
    NSMutableDictionary * firstOne = [словарь NSMutableDictionary];
    [firstOne setObject: имя forKey: @ "имя"];
    [firstOne setObject: фамилия forKey: @ "фамилия"];
    [firstOne setObject: ReminderDate forKey: @ "ReminderDate"];
    
    [словарь setObject: firstOne forKey: [NSNumber numberWithInt: code]];
    
    // повторяем для каждой записи.
    
15
ответ дан 4 December 2019 в 09:11
поделиться

Я не думаю, что вы понимаете, как работают словари. Каждый ключ может иметь только одно значение. Вам понадобится словарь словарей или словарь массивов.

Здесь вы создаете словарь для каждого человека, а затем сохраняете его в своем главном словаре.

NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:
forename, @"forename", surname, @"surname", @reminderDate, "@reminderDate", nil];

[dictionary setObject:d forKey:[NSNumber numberWithint:code]];
2
ответ дан 4 December 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: