Как добавить в NSDictionary

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

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

Ответ 1

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

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

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

и получить:

int myNumber = [[dict objectForKey:@"A cool number"] intValue];

Ответ 2

Установив, вы бы использовали метод 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

Ответ 3

Когда объявляется массив, тогда только мы должны добавить значение ключа в 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"];

Ответ 4

Обновить версию

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

Ответ 5

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

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