Ios 如何从NSArray中删除具有相同值的对象的副本
我有一个Ios 如何从NSArray中删除具有相同值的对象的副本,ios,objective-c,Ios,Objective C,我有一个n字典看起来像这样: NSArray *duplicates = @[@{@"name": @"a", @"id": @"123"}, @{@"name": @"c", @"id": @"234"}, @{@"name": @"a", @"id": @"431"}, @{@"name": @"c", @"id": @"983"}, @{@"name": @"a", @"038"}]; NSArray *duplicates = @[@{@"name": @"a", @"id": @"1
n字典
看起来像这样:
NSArray *duplicates = @[@{@"name": @"a", @"id": @"123"}, @{@"name": @"c", @"id": @"234"}, @{@"name": @"a", @"id": @"431"}, @{@"name": @"c", @"id": @"983"}, @{@"name": @"a", @"038"}];
NSArray *duplicates = @[@{@"name": @"a", @"id": @"123"}, @{@"name": @"c", @"id": @"234"}];
如何删除具有相同名称的附加项。例如,我想删除重复的“a”和“c”。我希望结果是这样的:
NSArray *duplicates = @[@{@"name": @"a", @"id": @"123"}, @{@"name": @"c", @"id": @"234"}, @{@"name": @"a", @"id": @"431"}, @{@"name": @"c", @"id": @"983"}, @{@"name": @"a", @"038"}];
NSArray *duplicates = @[@{@"name": @"a", @"id": @"123"}, @{@"name": @"c", @"id": @"234"}];
你试过这个代码吗
NSArray *duplicates = @[@{@"name": @"a"}, @{@"name": @"c"}, @{@"name": @"a"}, @{@"name": @"c"}, @{@"name": @"a"}];
NSSet *set = [NSSet setWithArray:duplicates];
NSArray *uniqueArray = [set allObjects];
只需使用以下代码删除重复的值
your_array = [self groupsWithDuplicatesRemoved:(NSArray *)your_array myKeyParameter:@"your_key_name"];
您只需使用键名调用groupsWithDuplicatesRemoved
此方法即可
- (NSMutableArray *) groupsWithDuplicatesRemoved:(NSArray *) groups myKeyParameter:(NSString *)myKeyParameter {
NSMutableArray * groupsFiltered = [[NSMutableArray alloc] init]; //This will be the array of groups you need
NSMutableArray * groupNamesEncountered = [[NSMutableArray alloc] init]; //This is an array of group names seen so far
NSString * name; //Preallocation of group name
for (NSDictionary * group in groups) { //Iterate through all groups
name = [NSString stringWithFormat:@"%@", [group objectForKey:myKeyParameter]]; //Get the group name
if ([groupNamesEncountered indexOfObject: name]==NSNotFound) { //Check if this group name hasn't been encountered before
[groupNamesEncountered addObject:name]; //Now you've encountered it, so add it to the list of encountered names
[groupsFiltered addObject:group]; //And add the group to the list, as this is the first time it's encountered
}
}
return groupsFiltered;
}
希望,这就是你要找的。如有任何问题,请与我联系。:) 您是否搜索了重复的问题?为什么要首先添加重复项?如果您在一个字典中有多个键,并且所有数据都在一个数组中,请参考此链接。现在您只需要根据一个键获得唯一数组。那么你必须使用这个技巧。例如,你有一个这样的数组<代码>NSArray*重复项=@[{“名称”:@“a”,“名称1”:@“c”},{“名称”:@“b”,“名称1”:@“d”},{“名称”:@“c”,“名称1”:@“d”},{“名称1”:@“d”},{“名称”:@“d”},{“名称1”:@“d”}代码>。。。现在,您需要基于“name1”键获取唯一数组。。在那个时候,你必须像这样使用这个代码<代码>唯一_数组=[self groupsWithDuplicatesRemoved:(NSArray*)复制myKeyParameter:@“name1”]代码>很抱歉,每个字典中都有id,但id都是唯一的。我想你的方法行不通。请看更新的问题。@yongho我知道了。您在上一个数组中没有指定id。