【问题标题】:Removing duplicates of a key value from an array of dictionaries从字典数组中删除键值的重复项
【发布时间】:2014-07-18 08:21:36
【问题描述】:

我正在执行 Facebook API 请求,以返回来自特定 Facebook 群组的所有专辑名称。我返回了一个包含 3 个键/值的字典数组,其中一个是映射到专辑名称的键“名称”,以及键“id”和“created_time”。

唯一的问题是,由于某种原因,我得到了专辑的重复“名称”值......但只有几个。当我去 Facebook 页面时,无论如何,该专辑只有一个实例,没有重复。

此外,它们的“id”值不同,但它只是重复组中的第一个字典具有实际指向有效数据的 Facebook id,其他 Facebook id 值在您执行时不会返回任何内容与他们一起进行 Facebook 图形搜索,所以这是我想要的第一个重复项。

如何从我的数组中删除这些无用的重复字典并保留一个具有有效 Facebook id 的字典?谢谢! :)

【问题讨论】:

  • 分享您的代码以便于跟踪问题

标签: ios iphone objective-c ios7


【解决方案1】:

首先我想说的是,与事后掩盖问题相比,找到一种从 Facebook 获取“干净”列表的方法可能更有益。现在可能无法做到这一点,但至少要找出导致这种行为的原因或提交错误报告。

除此之外,这应该可以解决问题:

-(NSMutableArray *) groupsWithDuplicatesRemoved:(NSArray *)  groups {
    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 =[group objectForKey:@"name"]; //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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多