【问题标题】:Get the Array list based on the duplicate values in that Array Objective C根据该 Array Objective C 中的重复值获取 Array 列表
【发布时间】:2018-03-12 09:26:18
【问题描述】:

我遇到了以下问题。我收到了以下回复。

(
 {
     CarrId = 102;
     CarrName = "Fast and Furious";
     CarrOptions =         (
                               {
                                   Id = 8;
                                   Img = "400.jpg";
                                   PImg = "412.jpg";
                                   PQ = "S-30";
                               },
                               {
                                   Id = 9;
                                   Img = "400.jpg";
                                   PImg = "412.jpg";
                                   PQ = "M-30";
                               },
                               {
                                   Id = 10;
                                   Img = "603.jpg";
                                   PImg = "611.jpg";
                                   PQ = "S-30";
                               },
                               {
                                   Id = 11;
                                   Img = "603.jpg";
                                   PImg = "611.jpg";
                                   PQ = "M-30";
                               },
                               {
                                   Id = 12;
                                   Img = "603.jpg";
                                   PImg = "611.jpg";
                                   PQ = "L-30";
                               },
                               {
                                   Id = 13;
                                   Img = "738.jpg";
                                   PImg = "749.jpg";
                                   PQ = "S-30";
                               },
                               {
                                   Id = 14;
                                   Img = "738.jpg";
                                   PImg = "749.jpg";
                                   PQ = "M-30";
                               }
                               );
     Status = 1;
 }
 )

根据该数组目标 C 中的重复值获取数组列表。我需要根据 PImg 获取数组。例如,如果 PImg = 412.jpg。我需要类似下面的数组

                               {
                                   Id = 8;
                                   Img = "400.jpg";
                                   PImg = "412.jpg";
                                   PQ = "S-30";
                               },
                               {
                                   Id = 9;
                                   Img = "400.jpg";
                                   PImg = "412.jpg";
                                   PQ = "M-30";
                               }

我只是从响应中获取重复项

NSMutableDictionary * thisRow = [resultArray objectAtIndex:0];
NSMutableArray  *pdctDtls = [thisRow objectForKey:@"CarrOptions"];

NSOrderedSet *orderedSet = [[NSOrderedSet orderedSetWithArray:pdctDtls] valueForKey:@"PImg"];
NSMutableArray *newarray = [orderedSet mutableCopy];

在 newarray 中我得到了重复的值。但是如果在newarray中如果412.jpg得到与412.jpg相关的数组。 TIA

【问题讨论】:

  • 是的,我想要那个列表
  • 我已经在问题中提供了答案
  • 你工作得很好。谢谢@Kuldeep

标签: objective-c nsarray


【解决方案1】:

试试这个。如果你通过611.jpg,你会得到3个对象。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@", @"611.jpg"]; // AS PER YOUR REQUIREMENT
NSArray *array =[pdctDtls filteredArrayUsingPredicate:predicate];

【讨论】:

    【解决方案2】:

    你可以像这样使用 NSPredicate:

    NSArray *pdctDtls = thisRow[@"CarrOptions"];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"PImg = %@", @"412.jpg"];
    NSArray *resultsWithSamePimg = [pdctDtls filteredArrayUsingPredicate:predicate];
    if (resultsWithSamePimg.count > 1) {
        // we have some duplicates
        // ...
    }
    

    但我宁愿使用普通的旧 for 循环,这样可能更容易调试和理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多