我有一个字符串数组.我只需保留唯一值,即.我想删除所有复制品.例如:如果数组是{string1,string1,string1,string2,string3,string3},那么最后一个数组应该是{string1,string2,string3}
for(int p = 0; p < [allNewsDates count]; p++)
{
NSLog(@"%@",allNewsDates[p]);
for(int q = p+1; q < [allNewsDates count]; q++)
{
NSLog(@"%@ %@",allNewsDates[p],allNewsDates[q]);
if([allNewsDates[p] isEqualToString:allNewsDates[q]])
{
flag = YES;
t = q;
break;
}
}
if(flag)
{
//[self.date addObject:allDates[p]];
[allNewsDates removeObjectAtIndex:p];
NSLog(@"%i",[allNewsDates count]);
}
NSLog(@"%i",p);
flag = NO;
}
Run Code Online (Sandbox Code Playgroud)
我按照上述步骤从所有日期的数组中提取唯一日期.这通常可行.但问题是:我有一个新闻视图控制器,显示新闻提要.如果用户在那里选择任何新闻,则会将其添加到收藏夹中.如果我一次性选择所有新闻项目,那么收藏夹表格会根据日期显示新闻(不同的日期会出现在5月9日和10日),但如果我添加新闻,请转到收藏夹,然后返回新闻并点击一些新闻项目(例如5月10日)并再次访问收藏夹,然后我将在5月10日两次.我哪里错了?请帮忙!!
将您的数组添加到NSSet,就是这样
NSSet *mySet = [[NSSet alloc] initWithArray:allNewsDates];
NSArray *filteredArray = [mySet allObjects];
Run Code Online (Sandbox Code Playgroud)
您可以简单地使用KVC集合运算符:
NSArray* uniqueDates = [allNewDates valueForKeyPath:@"@distinctUnionOfObjects.self"]
Run Code Online (Sandbox Code Playgroud)
更多细节请访问:http://www.nshipster.com/kvc-collection-operators