• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 如何合并两个 NSArray

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:09:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我会知道如何合并两个包含一些重复的数组: 这是一个例子来说明我想要做什么:

// Here is some dictionary which contain an unique "id" key.
NSDictionary *dico1 = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"11111111", @"id", nil];
NSDictionary *dico2 = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"22222222", @"id", nil];
NSDictionary *dico3 = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"33333333", @"id", nil];
NSDictionary *dico4 = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"44444444", @"id", nil];
NSDictionary *dico5 = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"55555555", @"id", nil];

// And here is duplicates of the 2nd and 3td dictionary.
NSDictionary *dico2_bis = [NSDictionary dictionaryWithObjectsAndKeys:
                           @"22222222", @"id", nil];
NSDictionary *dico3_bis = [NSDictionary dictionaryWithObjectsAndKeys:
                           @"33333333", @"id", nil];

现在我有一个数组,其中包含一些字典:

NSArray *currentArray = [NSArray arrayWithObjects:
                         dico1, dico2, dico3, nil];

这是要与第一个合并的新数组,其中包含一些重复的新“数据”:

NSArray *tempArray = [NSArray arrayWithObjects:
                      dico2_bis, dico3_bis, dico4, dico5, nil];

在最后阶段,我的目标是创建一个数组,其中包含所有字典并删除了所有重复项

NSArray *finalArray = [NSArray arrayWithObjects:
                       dico1, dico2, dico3, dico4, dico5, nil];


我不知道什么是最有效的解决方案,合并必须很快。我是否必须实现快速枚举或基于 block 的枚举算法,或者可能是 NSPredicate 实现? 我已经搜索过 NSPredicate,但我还没有找到用其他数组过滤数组的方法 =/
任何帮助将不胜感激。



Best Answer-推荐答案


你不使用 NSArrays,你需要的是一个自动消除“重复”的集合(“doubloon”是西类牙金币)。因此,您只需使用 NSMutableSet 并将您的 NSDictionaries 添加到其中。

NSMutableSet aSet = [NSMutableSet new];
[aSet addObject:dico1];
....

关于iphone - 如何合并两个 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955250/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap