Я использовал NSMutableArray
и понял, что использование словаря намного проще для того, чего я пытаюсь достичь.
Я хочу сохранить ключ как NSString
и значение как int
в словаре. Как это сделать? Во-вторых, в чем разница между изменяемым и обычным словарем?
iphone
objective-c
nsdictionary
система
источник
источник
Установив, вы должны использовать
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;
Разница между изменчивым и «нормальным» заключается в изменчивости. Т.е. вы можете изменить содержимое
NSMutableDictionary
(иNSMutableArray
), в то время как вы не можете сделать это с помощью "нормального"NSDictionary
иNSArray
источник
[{image: "/path/to/img/1.jpg", data: "foo bar 1"}, {image: "/path/to/img/2.jpg", data: "foo bar 2"}, ..., {image: "/path/to/img/N.jpg", data: "foo bar N"}]
Когда когда-либо объявляется массив, тогда только нам нужно добавить значение ключа в 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"];
источник
Обновить версию
Цель-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
источник
Вы хотите спросить: «В чем разница между изменяемым и неизменяемым массивом или словарем». Часто для описания вещей, о которых вы уже знаете, используются разные термины. В этом случае вы можете заменить термин «изменчивый» на «динамический». Таким образом, изменяемый словарь или массив - это тот, который является «динамическим» и может изменяться во время выполнения, тогда как неизменяемый словарь или массив - это тот, который является «статическим» и определен в вашем коде и не изменяется во время выполнения (другими словами , вы не будете добавлять, удалять или, возможно, сортировать элементы.)
Что касается того, как это делается, вы просите нас повторить приведенную здесь документацию. Все, что вам нужно сделать, это поискать в образце кода и документации Xcode, чтобы точно увидеть, как это делается. Но изменчивая штука бросила и меня, когда я впервые учился, так что я дам тебе ее!
источник
Для справки вы также можете использовать
initWithDictionary
для инициализацииNSMutableDictionary
буквальный:NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{ @"touch": @0, @"app": @0, @"back": @0, @"volup": @0, @"voldown": @0 }];
источник