ios - 从字典数组中删除键值的重复项

标签 ios iphone objective-c ios7

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

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

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

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

最佳答案

首先,我想说,找到一种方法从 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;
}

关于ios - 从字典数组中删除键值的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24820376/

相关文章:

网络应用程序的 iPhone 推送通知?

ios - 如何使用 ios 中的自动布局将三个按钮并排放置在中心位置?

ios - 为嵌套的 NSDictionary 生成键值编码路径的完整列表?

ios - 如何正确保存iOS应用状态?

ios - 使用 AFNetworking 2.0 上传图像

iOS 泄漏工具与事件监视器

ios - 如何在codemagic中创建podfile?

iOS-启动应用程序的方法

ios - 从自定义 UITableViewCell 中的按钮执行 segue

iphone - 来自 AVCaptureVideoPreviewLayer 的 UIImage