gpt4 book ai didi

objective-c - 删除 NSArray 中所有重复的字符串

转载 作者:太空狗 更新时间:2023-10-30 03:21:08 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何在 Objective-C 中实现它。

我想删除 NSArray 中在数组中多次出现的字符串。

最后我想要一个只包含数组中唯一行的数组(这意味着不仅删除了重复项,还删除了与重复项匹配的原始字符串。)

例如,如果您有以下数组:

NSArray *array = [NSArray arrayWithObjects:@"bob", @"frank", @"sarah", @"sarah", @"fred", @"corey", @"corey", nil];

我希望新数组看起来像这样:

@"bob", @"frank", @"fred"

最佳答案

使用 NSCountedSet :

NSCountedSet *countedSet = [NSCountedSet setWithArray:yourArray];
NSMutableArray *finalArray = [NSMutableArray arrayWithCapacity:[yourArray count]];

for(id obj in countedSet) {
if([countedSet countForObject:obj] == 1) {
[finalArray addObject:obj];
}
}

@Caleb建议向 NSCountedSet 添加一个名为 -objectsWithCount:, 的方法,我已在此处实现了该方法:

@interface NSCountedSet (JRCountedSetAdditions)

- (NSArray *) objectsWithCount:(NSUInteger) count;

@end

@implementation NSCountedSet (JRCountedSetAdditions)

- (NSArray *) objectsWithCount:(NSUInteger) count {
NSMutableArray *array = [NSMutableArray array];
for(id obj in self) {
if([self countForObject:obj] == count) {
[array addObject:obj];
}
}
return [array copy];
}

@end

完成后,您只需要一行:

NSArray *finalArray = [[NSCountedSet setWithArray:yourArray] objectsWithCount:1];

顺便说一句,这是类型不可知的,因此它适用于任何 Objective-C 对象。 :-)

关于objective-c - 删除 NSArray 中所有重复的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com