首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS sdk NSArray在NSArray中的查找和合并

iOS sdk NSArray在NSArray中的查找和合并
EN

Stack Overflow用户
提问于 2017-02-21 04:43:40
回答 1查看 54关注 0票数 0

我试图在多个NSArray中搜索和合并对象。

基本上是NSArray,它有多个NSArray,有一个对象,然后是NSDictionary。我希望检查该对象是否已经存在,并将其与现有对象合并,因此NSSArray将具有一个带有1对象的NSArray,然后在object中使用多个NSDictionary。

代码语言:javascript
复制
(
  (
    "The Essential: Céline Dion",
    {
      "album": "The Essential: Céline Dion",
      "artwork": "<UIImage: 0x608000087210>, {512, 506}",
      "title": "It's All Coming Back to Me Now"
    }
  ),
  (
    "Ah Via Musicom",
    {
      "album": "Ah Via Musicom",
      "artwork": "<UIImage: 0x60000008a6e0>, {600, 600}",
      "title": "Cliffs of Dover"
    }
  ),
  (
    "Tears Roll Down (Greatest Hits 82-92)",
    {
      "album": "Tears Roll Down (Greatest Hits 82-92)",
      "artwork": "<UIImage: 0x6080000887a0>, {512, 512}",
      "title": "Everybody Wants to Rule the World"
    }
  ),
  (
    "No Money - Single",
    {
      "album": "No Money - Single",
      "artwork": "<UIImage: 0x6080000845b0>, {600, 600}",
      "title": "No Money"
    }
  ),
  (
    "Tears Roll Down (Greatest Hits 82-92)",
    {
      "album": "Tears Roll Down (Greatest Hits 82-92)",
      "artwork": "<UIImage: 0x60800008d5c0>, {512, 512}",
      "title": "Shout"
    }
  ),
  (
    "STAB!",
    {
      "album": "STAB!",
      "artwork": "<UIImage: 0x60800008da20>, {512, 512}",
      "title": "Will You Remember Me?"
    }
  ),
  (
    "Life After Sundown",
    {
      "album": "Life After Sundown",
      "artwork": "<UIImage: 0x60000008d840>, {600, 600}",
      "title": "Werewolves On Wheels"
    }
  )
)

到这个

代码语言:javascript
复制
(
  (
    "The Essential: Céline Dion",
    {
      "album": "The Essential: Céline Dion",
      "artwork": "<UIImage: 0x608000087210>, {512, 506}",
      "title": "It's All Coming Back to Me Now"
    }
  ),
  (
    "Ah Via Musicom",
    {
      "album": "Ah Via Musicom",
      "artwork": "<UIImage: 0x60000008a6e0>, {600, 600}",
      "title": "Cliffs of Dover"
    }
  ),
  (
    "Tears Roll Down (Greatest Hits 82-92)",
    {
      "album": "Tears Roll Down (Greatest Hits 82-92)",
      "artwork": "<UIImage: 0x6080000887a0>, {512, 512}",
      "title": "Everybody Wants to Rule the World"
    },
    {
      "album": "Tears Roll Down (Greatest Hits 82-92)",
      "artwork": "<UIImage: 0x60800008d5c0>, {512, 512}",
      "title": "Shout"
    }
  ),
  (
    "No Money - Single",
    {
      "album": "No Money - Single",
      "artwork": "<UIImage: 0x6080000845b0>, {600, 600}",
      "title": "No Money"
    }
  ),
  (
    "STAB!",
    {
      "album": "STAB!",
      "artwork": "<UIImage: 0x60800008da20>, {512, 512}",
      "title": "Will You Remember Me?"
    }
  ),
  (
    "Life After Sundown",
    {
      "album": "Life After Sundown",
      "artwork": "<UIImage: 0x60000008d840>, {600, 600}",
      "title": "Werewolves On Wheels"
    }
  )
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-21 05:26:49

让我们将原始数组的数组称为mainArray

首先,您从那个mainArray中收集唯一的名称。

代码语言:javascript
复制
NSMutableArray *uniqueNames = [NSMutableArray array];

for (NSArray *sub in mainArray) {
    NSString *name = [sub firstObject];
    BOOL isDuplicate = [[uniqueNames filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF contains %@",name]] count] > 0;
    if (!isDuplicate) {
        [uniqueNames addObject:name];
    }
}

然后,循环遍历uniqueNames数组,在mainArray中搜索副本并重新构造数组。

代码语言:javascript
复制
NSMutableArray *final = [NSMutableArray array];
for (NSString *name in uniqueNames) {
    NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"SELF contains %@",name];
    NSArray *duplicateArrays = [mainArray filteredArrayUsingPredicate:namePredicate];
    if ([duplicateArrays count] > 1) {
        NSMutableArray *newArray = [NSMutableArray arrayWithObject:name];
        for (NSArray *duplicateArray in duplicateArrays) {
            [newArray addObject:[duplicateArray lastObject]];
        }
        [final addObject:newArray];
    }
    else{
        [final addObject:duplicateArrays];
    }
}

在这里,final数组是您的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42358860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档