使用相同的键合并NSMutableArray中的对象数据

良寿

我有以下NSMutableArray,其键为“ id,value,name”和“ id,animal”:

    <__NSArrayM 0x7a64f450>(
    {
        id = ccc;
        value = 11;
        name = "Greg";
    },
    {
        id = bbb;
        value = 2;
        name = "Dan";
    },
    {
        id = aaa;
        value = 23;
        name = "Mary";
    },
    {
        id = aaa;
        animal = "dog";
    },
    {
        id = ccc;
        animal = "cat";
    }

)

是否可以通过匹配键来合并内容?所以最后我会得到:

        <__NSArrayM 0x7a64f450>(
        {
            id = ccc;
            value = 11;
            name = "Greg";
            animal = "cat"
        },
        {
            id = bbb;
            value = 2;
            name = "Dan";
        },
        {
            id = aaa;
            value = 23;
            name = "Mary";
            animal = "dog";
        }

    )

我正在寻找如果键匹配id的对象组合。所有其他键应合并在一起。

甘道夫

一个更优雅的方法是使用NSPredicate使用此代码。arrRecords是您在合并之前存储所有记录的位置。

NSString *strKey;  
NSPredicate *predicate;  
NSArray *tempArray;       

for(int i = 0; i < [arrRecords count]; i++) {
    strKey = [[arrRecords objectAtIndex:i] valueForKey:@"id"];
    predicate = [NSPredicate predicateWithFormat:@"id == %@",strKey];
    tempArray = [arrRecords filteredArrayUsingPredicate:predicate];
    if([tempArray count] > 1) {
       for(int j =0; j < [tempArray count]-1; j++) {
       [[arrRecords objectAtIndex:i] addEntriesFromDictionary:[tempArray objectAtIndex:j+1]];
       [arrRecords removeObject:[tempArray objectAtIndex:j+1]];  // You need to remove the record from super set otherwise this will get duplicated again.
            }
        }
    }

编辑-NSDictionary对象的代码

NSMutableArray *newRecords = [[NSMutableArray alloc] init]; // Add this also before method body

 for(int i = 0; i < [arrRecords count]; i++) {  

     strKey = [[arrRecords objectAtIndex:i] valueForKey:@"id"];  
     predicate = [NSPredicate predicateWithFormat:@"id == %@",strKey];  
     tempArray = [arrRecords filteredArrayUsingPredicate:predicate];  
     if([tempArray count] > 1) {  
         NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];   
         for(int j =0; j < [tempArray count]; j++) {  
             [tempDict addEntriesFromDictionary:[tempArray objectAtIndex:j]];  
             if(j!=0) {  
                [arrRecords removeObject:[tempArray objectAtIndex:j]];  
             }                
         }  
         [newRecords addObject:tempDict];
     }
     else {
        [newRecords addObject:[arrRecords objectAtIndex:i]];
     }  
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用相同的键合并对象

来自分类Javascript

使用相同的键合并数组中的javascript对象

来自分类Dev

使用相同的键合并对象数组

来自分类Dev

如何使用相同的键合并嵌套对象

来自分类Dev

合并对象数组,并使用相同的键合并对象内部的数组

来自分类Dev

在对象数组中合并带有“相同键”的对象

来自分类Dev

使用ansible合并字典变量列表中具有相同键的对象值

来自分类Dev

使用jQuery(JavaScript)合并对象数组中多个相同键的值

来自分类Dev

如何在JavaScript中合并具有相同键的对象?

来自分类Dev

如何合并数组中具有相同键的对象?

来自分类Dev

在JavaScript中合并具有相同键的对象

来自分类Dev

使用 XSLT 中的某些键合并数据

来自分类Dev

使用 lodash 将具有相同键的对象的值合并到一个数组中

来自分类Dev

通过键从NSMutableArray中删除对象

来自分类Dev

合并具有相同键的对象数组

来自分类Dev

合并两个不相同的数组对象,在 Typescript 中匹配相同的键

来自分类Dev

使用相同的键将多个值保存在NSMutableDictionary中,然后将字典存储在NSMutableArray中

来自分类Dev

使用数组中的键合并对象的最佳方法?

来自分类Dev

如何在javascript中合并具有相同键的数组中的对象?

来自分类Dev

如何使用相同的键从json对象中获取项目?

来自分类Dev

Javascript:通过相同的键/值合并/重命名数组中的相似对象

来自分类Dev

如何在两个对象数组中合并具有相同键的属性?

来自分类Mysql

使用相同的键合并一个数组(对象列表)

来自分类Dev

在字典列表中合并相同键的值

来自分类Dev

在多维数组中合并相同的键

来自分类Dev

如何合并数组中的某些相同键

来自分类Dev

仅使用相同的键合并json数组

来自分类Dev

使用相同键的数组合并

来自分类Dev

我如何使用javascript中具有相同键的对象在对象中创建对象数组

Related 相关文章

  1. 1

    使用相同的键合并对象

  2. 2

    使用相同的键合并数组中的javascript对象

  3. 3

    使用相同的键合并对象数组

  4. 4

    如何使用相同的键合并嵌套对象

  5. 5

    合并对象数组,并使用相同的键合并对象内部的数组

  6. 6

    在对象数组中合并带有“相同键”的对象

  7. 7

    使用ansible合并字典变量列表中具有相同键的对象值

  8. 8

    使用jQuery(JavaScript)合并对象数组中多个相同键的值

  9. 9

    如何在JavaScript中合并具有相同键的对象?

  10. 10

    如何合并数组中具有相同键的对象?

  11. 11

    在JavaScript中合并具有相同键的对象

  12. 12

    使用 XSLT 中的某些键合并数据

  13. 13

    使用 lodash 将具有相同键的对象的值合并到一个数组中

  14. 14

    通过键从NSMutableArray中删除对象

  15. 15

    合并具有相同键的对象数组

  16. 16

    合并两个不相同的数组对象,在 Typescript 中匹配相同的键

  17. 17

    使用相同的键将多个值保存在NSMutableDictionary中,然后将字典存储在NSMutableArray中

  18. 18

    使用数组中的键合并对象的最佳方法?

  19. 19

    如何在javascript中合并具有相同键的数组中的对象?

  20. 20

    如何使用相同的键从json对象中获取项目?

  21. 21

    Javascript:通过相同的键/值合并/重命名数组中的相似对象

  22. 22

    如何在两个对象数组中合并具有相同键的属性?

  23. 23

    使用相同的键合并一个数组(对象列表)

  24. 24

    在字典列表中合并相同键的值

  25. 25

    在多维数组中合并相同的键

  26. 26

    如何合并数组中的某些相同键

  27. 27

    仅使用相同的键合并json数组

  28. 28

    使用相同键的数组合并

  29. 29

    我如何使用javascript中具有相同键的对象在对象中创建对象数组

热门标签

归档