私はNSMutableArray
を使用していましたが、辞書を使用することは、私が達成しようとしているものに対してはるかに簡単であることに気付きました。
辞書にキーをNSString
として保存し、値をint
として保存したい。これはどのように行われますか?次に、可変辞書と通常の辞書の違いは何ですか?
mutable辞書は変更できます。つまり、オブジェクトを追加および削除できます。 不変は、作成されると修正されます。
作成して追加:
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];
そして取得:
int myNumber = [[dict objectForKey:@"A cool number"] intValue];
設定により、NSMutableDictionary
オブジェクトのsetValue:(id)value forKey:(id)key
メソッドを使用します。
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
では変更できません
配列が宣言されたら、次のようにNSDictionaryにKey-Valueを追加するだけです
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
をリテラル1で初期化することもできます。
NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
@"touch": @0,
@"app": @0,
@"back": @0,
@"volup": @0,
@"voldown": @0
}];