0

辞書内の特定のキーに基づいて、NSDictionaries の NSArray の重複を排除しようとしています。私が持っているものは次のようになります。

NSDictionary *person1 = [NSDictionary dictionaryWithObjectsAndKeys:@"John", @"firstName", @"Smith", "lastName", @"7898", @"employeeID"];
NSDictionary *person2 = [NSDictionary dictionaryWithObjectsAndKeys:@"Eric", @"firstName", @"Johnson", "lastName", @"1718" @"employeeID"];
NSDictionary *person3 = [NSDictionary dictionaryWithObjectsAndKeys:@"John", @"firstName", @"Smith", "lastName", @"1153", @"employeeID"];

NSMutableArray *personArray = [NSArray arrayWithObjects:person1, person2, person3, nil];

// insert some code to de-dupe personArray based SOLELY on the firstName and lastName keys

同じ名前で ID が異なる 2 人の従業員がいることに注意してください。私がやりたいことは、person1 と person2 だけで新しい配列を取得することです。person3 には同じデータがあるためです。この特定の問題では、「employeeID」の値は気にしません。

何か案は?ありがとう!

-マット

4

2 に答える 2

5

NSDictionaryを継承してisEqualを実装するPersonクラスを追加します。IDキーを無視し、辞書をこのクラスにキャストしてから、PersonオブジェクトからNSSetを作成します。

于 2010-10-21T16:56:02.327 に答える
0

この場合、一時的な NSMutableDictionary を作成し、各 personX 辞書をオブジェクトとして追加し、その「firstName」の値をキーとして追加します。このようにして、同じ名前の別の personX がテンポラリに追加されると、personX 辞書が置き換えられます。次に、 -allValuesを使用して一時辞書から配列を取得します。

于 2010-10-21T16:44:21.540 に答える