Użyłem NSMutableArray
i zdałem sobie sprawę, że korzystanie ze słownika jest o wiele prostsze w stosunku do tego, co próbuję osiągnąć.
Chcę zapisać klucz jako a NSString
i wartość jako a int
w słowniku. Jak to się robi? Po drugie, jaka jest różnica między słownikiem mutable a zwykłym?
iphone
objective-c
nsdictionary
system
źródło
źródło
Ustawiając, użyjesz
setValue:(id)value forKey:(id)key
metodyNSMutableDictionary
obiektu:NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; [dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];
Lub w nowoczesnym Objective-C:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; dict[@"age"] = @5;
Różnica między mutowalnym a „normalnym” polega na zmienności. Oznacza to, że możesz zmieniać zawartość
NSMutableDictionary
(iNSMutableArray
), podczas gdy nie możesz tego zrobić za pomocą „normalnych”NSDictionary
iNSArray
źródło
[{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"}]
Kiedykolwiek tablica jest zadeklarowana, wtedy tylko musimy dodać klucz-wartość w NSDictionary jak
NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];
nie możemy dodawać ani usuwać wartości kluczy w tym NSDictionary
Gdzie tak jak w NSMutableDictionary możemy dodać obiekty po inicjalizacji tablicy również przy użyciu tej metody
NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];' [mutableDict setObject:@"Value1" forKey:@"Key1"]; [mutableDict setObject:@"Value2" forKey:@"Key2"]; [mutableDict setObject:@"Value3" forKey:@"Key3"];
aby usunąć wartość klucza, musimy użyć następującego kodu
[mutableDict removeObject:@"Value1" forKey:@"Key1"];
źródło
Zaktualizuj wersję
Cel C
Stwórz:
NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5};
Zmiana:
NSMutableDictionary *mutableDictionary = [dictionary mutableCopy]; //Make the dictionary mutable to change/add mutableDictionary[@"myKey3"] = @3;
Nazywa się składnia short hand
Objective-C Literals
.Szybki
Stwórz:
var dictionary = ["myKey1": 7, "myKey2": 5]
Zmiana:
dictionary["myKey3"] = 3
źródło
Chcesz zapytać „jaka jest różnica między tablicą lub słownikiem mutowalną a niezmienną”. Wiele razy używa się różnych terminów do opisania rzeczy, o których już wiesz. W takim przypadku można zamienić termin „zmienny” na „dynamiczny”. Zatem słownik lub tablica z możliwością zmiany to taki, który jest „dynamiczny” i może się zmieniać w czasie wykonywania, podczas gdy słownik lub tablica niemodyfikowalna to taki, który jest „statyczny” i zdefiniowany w kodzie i nie zmienia się w czasie wykonywania (innymi słowy , nie będziesz dodawać, usuwać ani ewentualnie sortować elementów.)
Jeśli chodzi o to, jak to się robi, prosisz nas o powtórzenie dokumentacji tutaj. Wszystko, co musisz zrobić, to przeszukać przykładowy kod i dokumentację Xcode, aby zobaczyć, jak to się robi. Ale mutowalna rzecz również mnie rzuciła, kiedy się uczyłem, więc dam ci tę!
źródło
Dla odniesienia możesz również użyć
initWithDictionary
doNSMutableDictionary
zainicjowania z dosłownym:NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{ @"touch": @0, @"app": @0, @"back": @0, @"volup": @0, @"voldown": @0 }];
źródło