私は語学学習アプリに取り組んでいます。だから私はNSMutableDictionary
キーとして「単語」を持っています。これらのキーのオブジェクトはNSDictionaries
、キー「頻度」および「カウント」でネストされています。NSNumbersは、「頻度」と「カウント」のオブジェクトです。
初期化コードは次のとおりです。
NSString* path = [[NSBundle mainBundle] pathForResource:@"french_top_50000"
ofType:@"txt"];
NSString *fh = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
self.userWordlist = [[NSMutableDictionary alloc] init];
for (NSString *word in fh) {
NSArray *keyArray = [[NSArray alloc] initWithObjects:@"frequency", @"count", nil];
NSArray *objectArray = [[NSArray alloc] initWithObjects:frequency, count, nil];
NSDictionary *detailsDict = [[NSDictionary alloc] initWithObjects:objectArray forKeys:keyArray];
[self.userWordlist setObject:detailsDict forKey:word];
}
このリストの一部をテーブルに表示していますが、内部キーの1つである「頻度」で並べ替えたいと思います。これを行う方法がわかりません。
「なぜこれをネストされた辞書に保存したのか」という最初の考えの場合、アプリの他の部分で単語がNSMutableDictionaryにあるかどうかを頻繁に検索するため、単語をキーにしたかったのです。
「単語」、「頻度」、「カウント」などのキーを備えたフラットな辞書を作成することを考えましたが、単語が含まれているかどうかを確認するには、列挙する必要があります。
より良いデータ構造戦略について何か提案があれば、ぜひ聞いてみたいと思います。「単語」が含まれているかどうかを頻繁にチェックし、「頻度」または「カウント」に基づいてソートする頻度は低くなります。
私はこれに似た質問をたくさん見ましたが、それらはすべてフラットな辞書のためのものです。