【问题标题】:NSArray get entire object from key value [duplicate]NSArray从键值中获取整个对象[重复]
【发布时间】:2015-03-22 15:27:47
【问题描述】:

一定是瞎了眼,看不出与上述问题的区别。

我有一个像

这样的 NSArray
[
    {
        "NAME": "MyProduct1",
        "UUID": 4
    },
    {
        "NAME": "MyProduct2",
        "UUID": 10
    },
    {
        "NAME": "MyProduct3",
        "UUID": 18
    },
...
]

现在有了一个特定的 ID 号,我想获得一本只包含相关产品的字典。所以 ID=18 就是:

 {
  "NAME": "MyProduct3",
  "UUID": 18
 }

考虑到每个 UUID 在数组中都是唯一的,我正在尝试找到一个优雅的解决方案。

【问题讨论】:

  • 这根本不是同一个问题。这是关于从另一个具有可能重复值的 NSArray 中获取 NSArray,这里我们说的是从单个(并且是唯一的,参见 UUID)值中获取 NSDictionary。
  • 这里欢迎任何形式的争论。
  • 权力越大,责任越大。下次请仔细阅读。

标签: ios


【解决方案1】:

您可以使用NSPredicate

NSArray *myArray = @[
    @{
        @"NAME": @"MyProduct1",
        @"UUID": @4
    },
    @{
        @"NAME": @"MyProduct2",
        @"UUID": @10
    },
    @{
        @"NAME": @"MyProduct3",
        @"UUID": @18
    }
];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UUID == 18"];
NSArray *filteredArray = [myArray filteredArrayUsingPredicate:predicate];
id firstFoundObject = filteredArray.firstObject;
NSLog(@"Result: %@", firstFoundObject);

结果:

2015-03-22 17:15:06.468 Untitled[23770:2311273] Result: {
    NAME = MyProduct3;
    UUID = 18;
}

如此处所述: How to search an NSSet or NSArray for an object which has an specific value for an specific property?

【讨论】:

  • 谢谢,但这不起作用,可能是因为每个对象中有多个属性。
  • @kursus 它确实有效 - 请参阅我更新的答案。除非结果不是你想要的?
  • 确实有效 我很抱歉,谢谢!
  • 如果您使用的是firstObject,则无需检查count
  • @AaronBrager 你是对的。更新了答案。
猜你喜欢
  • 1970-01-01
  • 2021-07-16
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 2013-12-04
  • 2011-08-18
  • 1970-01-01
相关资源
最近更新 更多