私はを使用しNSMutableArray
ていましたが、辞書を使用するほうが私が達成しようとしていることよりもはるかに簡単であることに気付きました。
キーをとしてNSString
、値をとしてint
辞書に保存したい。これはどのように行われますか?次に、変更可能な辞書と通常の辞書の違いは何ですか?
回答:
変更可能な辞書はつまり、あなたがオブジェクトを追加したり削除することができ、変更することができます。不変は、それが作成されると固定されています。
作成して追加:
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];
そして取得:
int myNumber = [[dict objectForKey:@"A cool number"] intValue];
オブジェクトの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"];
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
ます。
迅速
作成:
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
}];