ios - 从其他NSSet中减去NSSet

Dur*_*sad 2 nsset nspredicate ios

我有两个NSSet.一个包含所有UserKeys,另一个包含在线用户密钥.我想在这两个部分中显示这些值.第1节 - 在线用户和第2节 - 其他用户

我使用下面的谓词做了这个.

NSSet *nsset1 = [NSSet setWithArray:attendeesService.arrof_attendeeList]; //this are all users
nsset2 = [NSSet setWithArray:tempArray]; // temparray contains all online users.
NSSet *nsset2_ids = [nsset2 valueForKey:@"UserProfileKEY"]; 
nsset1_minus_nsset2 = [nsset1 filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"NOT UserProfileKEY IN %@",nsset2_ids]]; 
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是所有用户大约3000+,在线可能一次超过200+.所以需要花费很多时间.4-5名在线用户需要1分钟.因此,200多名在线用户将花费更多时间.有更快的解决方案吗?

谢谢.

jce*_*ile 9

使用minusSetfromNSMutableSet

minusSet:从接收集中移除另一个给定集中的每个对象(如果存在).

NSMutableSet *nsset1 = [NSMutableSet setWithArray: attendeesService.arrof_attendeeList];
NSSet *set2 = [NSSet setWithArray: tempArray];
[nsset1 minusSet: set2];
NSArray *nsset1_minus_nsset2 = [nsset1 allObjects];
Run Code Online (Sandbox Code Playgroud)