オブジェクトをオブジェクト C のコレクション (オブジェクト、キー) の形式で保存したいと思います。それにNSMutableDictionary
適合することがわかりましたが、問題は、必要なオブジェクトを取得できないことです (最後に追加されたオブジェクト、最初に追加されたオブジェクト.. .)。そうするより良い方法はありますか?
4 に答える
Dictionary に追加したこのオブジェクトのキーを使用して、オブジェクトを取り戻すことができます。
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"A" forKey:@"a"];
NSString *strA = [dict objectForKey:@"a"];
キーを NSMutableArray に配置すると、最後/最初のキーを取得するのに役立ちます。
その助けを願っています!
Key-Value ペアの場合、NSDictionary または NSMutableDictionary が正しいソリューションです。
特定のキーには 1 つの値しかなく、新しい値を設定すると古い値が上書きされます。
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setValue:@"World" forKey:@"Hello"];
NSLog(@"Hello %@", [myDictionary objectForKey:@"Hello"]); // prints Hello World
[myDictionary setValue:@"StackOverflow" forKey:@"Hello"];
NSLog(@"Hello %@", [myDictionary objectForKey:@"Hello"]); // prints Hello StackOverflow
[myDictionary setValue:nil forKey:@"Hello"];
NSLog(@"Hello %@", [myDictionary objectForKey:@"Hello"]); // prints Hello (null)
辞書は、キーを持っているときにデータにアクセスするためのものです。注文コンテナではありません。
コンテナーにいつデータを追加したかに基づいてデータを取得する必要がある場合は、LIFO (別名スタック)、FIFO (別名キュー)、または deque (別名両端キュー) の種類のコンテナーが必要です。初心者向けにウィキペディアでそれらについて読むことができますが、プログラマーになりたい場合は、まともなアルゴリズムとデータ構造の本を少なくとも1冊読むことをお勧めします。
私の知る限り、ココアでこれらの抽象化を実装する定義済みのクラスはありませんが、それらはすべて配列で簡単に実行できます。NSArray
haslastObject
とobjectAtIndex:
メソッド、および基本的に LIFO/FIFO/deque アクセスのプリミティブである 、 、 メソッドもあります (これらのメソッドでインデックスが必要な場合は 0 を使用すると仮定します) NSMutableArray
。addObject:
insertObject:atIndex:
removeLastObject
removeObjectAtIndex:
最後に追加されたオブジェクトまたはインデックスによるオブジェクトを取得する場合は、 NSMutablearray が最適な方法です。最初に追加されたオブジェクトはオブジェクト インデックス 0 にあり、最後に追加されたオブジェクトは [count-1] インデックスにあります