基本的に8000のユーザー名のリストであるplistがあります。これを NSDictionary にロードし、次にソートされたキーの配列 (取得時にリストがソートされていないため) をロードし、NSComboBox へのロードをループします。
これは機能しますが、コンボ ボックスに入力するのに数秒かかる場合があります。
これが私のコードです:
// in my .h
IBOutlet NSComboBox *comboUserList; // which is connected to a combo box in my .xib
// in my .m
// userInfoPlist is an NSString path to the file
NSDictionary *userList = [NSDictionary dictionaryWithContentsOfFile:userInfoPlist];
// sort user info into an array
NSArray* sortedKeys = [userList keysSortedByValueUsingSelector:@selector(caseInsensitiveCompare:)];
// then populate the combo box from userList in the order specified by sortedKeys
for ( NSString *usersKey in sortedKeys) {
[comboUserList addItemWithObjectValue:[userList objectForKey:usersKey]];
}
したがって、これは機能しますが、8000 個の奇数のエントリの場合、コンボ ボックスに入力するのにかなりの時間がかかります (2011 MAcBook Air では 1 ~ 2 秒ですが、それでも目立ちます)。NSDictionary または NSArray を for ループではなく、データ ソースとして使用するより高速な方法はありますか?