Как добавить в NSDictionary - PullRequest
84 голосов
/ 01 июля 2010

Я использовал NSMutableArray и понял, что использование словаря намного проще для того, чего я пытаюсь достичь.

Я хочу сохранить ключ как NSString и значение какint в словаре.Как это сделать?Во-вторых, в чем разница между изменяемым и обычным словарем?

Ответы [ 6 ]

190 голосов
/ 01 июля 2010
Словарь

A mutable может быть изменен, т.е. вы можете добавлять и удалять объекты. неизменный фиксируется после его создания.

создать и добавить:

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];

и получить:

int myNumber = [[dict objectForKey:@"A cool number"] intValue];
32 голосов
/ 01 июля 2010

Установив, вы будете использовать setValue:(id)value forKey:(id)key метод NSMutableDictionary объекта:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];

Или в современном Objective-C:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;

Разница между изменчивым и "нормальным", ну, в общем, изменчивость. То есть вы можете изменить содержимое NSMutableDictionaryNSMutableArray), в то время как вы не можете сделать это с помощью «обычных» NSDictionary и NSArray

12 голосов
/ 15 ноября 2013

Когда массив объявляется, только мы должны добавить значения ключа в NSDictionary вроде

NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];

мы не можем добавлять или удалять значения ключа в этом NSDictionary

Где, как и в NSMutableDictionary, мы также можем добавлять объекты после инициализации массива используя этот метод

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];

для удаления значения ключа мы должны использовать следующий код

[mutableDict removeObject:@"Value1" forKey:@"Key1"];
9 голосов
/ 24 мая 2014

Обновление версии

Objective-C

Создание:

NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5}; 

Изменение:

NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];     //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;

Краткоерукописный синтаксис называется Objective-C Literals.

Swift

Создать:

var dictionary = ["myKey1": 7, "myKey2": 5]

Изменить:

dictionary["myKey3"] = 3
1 голос
/ 01 июля 2010

Вы хотите спросить: «В чем разница между изменяемым и не изменяемым массивом или словарем».Много раз там используются разные термины для описания вещей, о которых вы уже знаете.В этом случае вы можете заменить термин «изменяемый» на «динамический».Таким образом, изменяемый словарь или массив является тем, который является «динамическим» и может изменяться во время выполнения, тогда как неизменяемый словарь или массив является тем «статическим» и определенным в вашем коде и не изменяется во время выполнения (другими словами, вы не будете добавлять, удалять или, возможно, сортировать элементы.)

Что касается того, как это делается, вы просите нас повторить здесь документацию.Все, что вам нужно сделать, это искать в образце кода и документации Xcode, чтобы увидеть, как именно это делается.Но изменчивая вещь бросила меня тоже, когда я только начинал учиться, так что я дам тебе это!

0 голосов
/ 04 января 2019

Для справки, вы также можете использовать initWithDictionary для инициализации NSMutableDictionary с буквальным:

NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
    @"touch": @0,
    @"app": @0,
    @"back": @0,
    @"volup": @0,
    @"voldown": @0
}];
...