以下のような Student クラスがあるとします。
class Student {
NSNumber *id;
NSString *lastName;
NSString *firstName;
}
Web サービスからすべての学生のレコードを取得すると、すべての学生のレコードを格納する NSArray が作成されます。ある時点で、名前に基づいて特定の学生の記録を見つけるために配列を検索する必要があります。
studentsFirstNameDictionary という名前の辞書を作成するとします。
ですから、学生配列にオブジェクトを追加しながら、私はできる
Student objStudent = [[Student alloc] init];
objStudent.Id = someId;
objStudent.firstName = someName;
objStudent.lastName = someLastName;
[studentsDictionary setValue:iterationCounter forKey:objStudent.firstName];
[students addObject:objStudent];
以下のように検索を高速化するために、この辞書を作成することをお勧めします。また、どのような場合でも配列が必要であり、高速検索のために、上記のように姓と ID をキーとして、インデックスを値として格納する他の辞書を作成していると仮定してください。
-(Student*)getStudentByFirstName:(NSString *)firstName {
int idxOfStudent = [ studentsDictionary valueForKey:firstName];
return [students idxOfStudent];
}
このアプローチは、学生の配列を反復処理してファーストネームを比較し、一致する学生レコードを返すよりもパフォーマンスが優れていると思いますか?
テーブルビューにその配列を設定する必要があるため、常に学生配列が必要です。学生の記録を最初の名前、姓、またはIDですばやく検索できるように、配列にデータを入力しながら複数の辞書を作成するのが賢明かどうか疑問に思っています。
PS: 簡単にするために、すべての学生が一意の名、姓、および ID を持っていると考えてください。これにより、名、姓、または ID を値として格納する辞書を作成する際に問題が発生することはありません。