我有NSArray
个包含两个属性的简单自定义类CustomClass
的对象:
@interface CustomClass : NSObject
@property (nonatomic) NSString *term;
@property (nonatomic) NSString *tag;
@end
我的目标是找出阵列中对象中使用最多的标记。
据我所知,因此我需要分组所有对象的字符串值为标记,计数它们和顺序计数的结果。
最好的方法是什么?可以使用NSPredicate
和filteredArrayUsingPredicate
完成吗?
答案 0 :(得分:3)
NSCountedSet* countedSet = [NSCountedSet setWithArray:[yourArray valueForKey:@"tag"]];
NSUInteger highestCount = 0;
NSString* mostCommonTag;
for (NSString* tag in countedSet)
{
NSUInteger count = [countedSet countForObject:tag];
if (count > highestCount)
{
highestCount = count;
mostCommonTag = tag;
}
}
如果多个标签共享最高计数,则上述逻辑将随机选择一个。您可以根据需要进行调整。