Поиск…


Синтаксис

  • @ {ключ: значение, ...}

  • [Словарь NSDictionaryWithObjectsAndKeys: значение, ключ, ..., ноль];

  • dict [ key ] = значение ;

  • id value = dict [ key ];

замечания

Класс NSDictionary объявляет программный интерфейс объектам, которые управляют неизменяемыми ассоциациями ключей и значений. Используйте этот класс или его подкласс NSMutableDictionary, когда вам нужен удобный и эффективный способ получения данных, связанных с произвольным ключом. NSDictionary создает статические словари, а NSMutableDictionary создает динамические словари. (Для удобства термин «словарь» относится к любому экземпляру одного из этих классов без указания его точного членства в классе).

Пара ключевых слов в словаре называется записью. Каждая запись состоит из одного объекта, который представляет ключ и второй объект, который является значением этого ключа. В словаре есть уникальные ключи. То есть, никакие два ключа в одном словаре не равны (как определено isEqual :). В общем случае ключ может быть любым объектом (при условии, что он соответствует протоколу NSCopying - см. Ниже), но обратите внимание, что при использовании кодирования с ключом ключ должен быть строкой (см. Основы кодирования по ключевым параметрам). Ни ключ, ни значение не могут быть равны нулю; если вам нужно представить нулевое значение в словаре, вы должны использовать NSNull.

NSDictionary является «бесплатным мостом» с его коллегой Core Foundation, CFDictionaryRef. См. «Бесконечное мостовое соединение» для получения дополнительной информации о бесплатном мостовом соединении.

Создание с использованием литералов

NSDictionary *inventory = @{
    @"Mercedes-Benz SLK250" : @(13),
    @"BMW M3 Coupe" : @(self.BMWM3CoupeInventory.count),
    @"Last Updated" : @"Jul 21, 2016",
    @"Next Update"  : self.nextInventoryUpdateString
};

Создание с использованием словаряWithObjectsAndKeys:

NSDictionary *inventory = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
    [NSNumber numberWithInt:22], @"Mercedes-Benz E350",
    [NSNumber numberWithInt:19], @"BMW M3 Coupe",
    [NSNumber numberWithInt:16], @"BMW X6",
    nil];

nil должен быть передан как последний параметр в качестве часового, означающего конец.

Важно помнить, что при копировании словарей таким образом значения сначала идут, а клавиши - вторые. В приведенном выше примере строки представляют собой ключи, а цифры - значения. Имя метода также отражает это: dictionaryWithObjectsAndKeys . Хотя это неверно, более современный способ создания словарей (с литералами) предпочтительнее.

Создание с использованием plists

NSString *pathToPlist = [[NSBundle mainBundle] pathForResource:@"plistName" 
    ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:pathToPlist];

Установка значения в NSDictionary

Существует несколько способов установить объект ключа в NSDictionary, соответствующий способам получения значения. Например, добавить lamborghini в список автомобилей

стандарт

[cars setObject:lamborghini forKey:@"Lamborghini"];

Как и любой другой объект, вызовите метод NSDictionary, который задает объект ключа, objectForKey: Будьте осторожны, чтобы не путать это с setValue:forKey: это совсем другое дело, Key Value Coding

стенография

cars[@"Lamborghini"] = lamborghini;

Это синтаксис, который вы используете для словарей на большинстве других языков, таких как C #, Java и Javascript. Это намного удобнее стандартного синтаксиса и, возможно, более читабельно (особенно, если вы кодируете на этих других языках), но, конечно, это не стандарт . Он также доступен только в новых версиях Objective C

Получение значения из NSDictionary

Существует несколько способов получить объект из NSDictionary с ключом. Например, чтобы получить lamborghini из списка автомобилей

стандарт

Car * lamborghini = [cars objectForKey:@"Lamborghini"];

Как и любой другой объект, вызовите метод NSDictionary, который дает вам объект для ключа, objectForKey: Будьте осторожны, чтобы не путать это с valueForKey: это совсем другое дело, Key Value Coding

стенография

Car * lamborghini = cars[@"Lamborghini"];

Это синтаксис, который вы используете для словарей на большинстве других языков, таких как C #, Java и Javascript. Это намного удобнее стандартного синтаксиса и, возможно, более читабельно (особенно, если вы кодируете на этих других языках), но, конечно, это не стандарт . Он также доступен только в новых версиях Objective C

Убедитесь, что NSDictionary уже имеет ключ или нет.

Цель c:

   //this is the dictionary you start with. 
 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name1", @"Sam",@"name2", @"Sanju",nil];

//check if the dictionary contains the key you are going to modify.  In this example, @"Sam"
if (dict[@"name1"] != nil) {
    //there is an entry for Key name1       
}
else {
    //There is no entry for name1       
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow