Saya menggunakan a NSMutableArray
dan menyadari bahwa menggunakan kamus jauh lebih sederhana untuk apa yang saya coba capai.
Saya ingin menyimpan kunci sebagai NSString
dan nilai sebagai int
dalam kamus. Bagaimana ini dilakukan? Kedua, apa perbedaan antara mutable dan kamus normal?
iphone
objective-c
nsdictionary
sistem
sumber
sumber
Dengan mengatur Anda akan menggunakan
setValue:(id)value forKey:(id)key
metodeNSMutableDictionary
objek:NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; [dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];
Atau dalam Objective-C modern:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; dict[@"age"] = @5;
Perbedaan antara bisa berubah dan "normal" adalah, yah, bisa berubah. Yaitu Anda dapat mengubah konten
NSMutableDictionary
(danNSMutableArray
) sementara Anda tidak dapat melakukannya dengan "normal"NSDictionary
danNSArray
sumber
[{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"}]
Kapan pun array dideklarasikan, maka hanya kita yang harus menambahkan nilai kunci di NSDictionary like
NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];
kami tidak dapat menambah atau menghapus nilai kunci dalam NSDictionary ini
Sedangkan di NSMutableDictionary kita dapat menambahkan objek setelah inisialisasi array juga dengan menggunakan metode ini
NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];' [mutableDict setObject:@"Value1" forKey:@"Key1"]; [mutableDict setObject:@"Value2" forKey:@"Key2"]; [mutableDict setObject:@"Value3" forKey:@"Key3"];
untuk menghapus nilai kunci kita harus menggunakan kode berikut
[mutableDict removeObject:@"Value1" forKey:@"Key1"];
sumber
Perbarui versi
Objective-C
Membuat:
NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5};
Perubahan:
NSMutableDictionary *mutableDictionary = [dictionary mutableCopy]; //Make the dictionary mutable to change/add mutableDictionary[@"myKey3"] = @3;
Sintaks pendek disebut
Objective-C Literals
.Cepat
Membuat:
var dictionary = ["myKey1": 7, "myKey2": 5]
Perubahan:
dictionary["myKey3"] = 3
sumber
Anda ingin bertanya adalah "apa perbedaan antara array atau kamus yang bisa berubah dan yang tidak bisa diubah." Seringkali ada istilah berbeda yang digunakan untuk menggambarkan hal-hal yang sudah Anda ketahui. Dalam kasus ini, Anda dapat mengganti istilah "bisa berubah" dengan "dinamis." Jadi, kamus atau larik yang dapat diperbaiki adalah kamus atau larik yang "dinamis" dan dapat berubah saat runtime, sedangkan kamus atau larik yang tidak dapat diubah adalah kamus atau larik yang "statis" dan ditentukan dalam kode Anda dan tidak berubah saat waktu proses (dengan kata lain , Anda tidak akan menambah, menghapus atau mungkin menyortir elemen.)
Mengenai cara melakukannya, Anda meminta kami mengulangi dokumentasi di sini. Yang perlu Anda lakukan adalah mencari kode sampel dan dokumentasi Xcode untuk melihat secara tepat bagaimana hal itu dilakukan. Tapi hal yang bisa berubah itu juga menghantamku ketika aku baru belajar, jadi aku akan memberimu yang itu!
sumber
Sebagai referensi, Anda juga dapat menggunakan
initWithDictionary
to initNSMutableDictionary
dengan literal:NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{ @"touch": @0, @"app": @0, @"back": @0, @"volup": @0, @"voldown": @0 }];
sumber