NSArray 从键值获取整个对象

kur*_*sus -2 ios

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

我有一个像 NSArray

[
    {
        "NAME": "MyProduct1",
        "UUID": 4
    },
    {
        "NAME": "MyProduct2",
        "UUID": 10
    },
    {
        "NAME": "MyProduct3",
        "UUID": 18
    },
...
]
Run Code Online (Sandbox Code Playgroud)

现在有了一个特定的 ID 号,我想得到一个只包含相关产品的字典。因此,ID=18 将是:

 {
  "NAME": "MyProduct3",
  "UUID": 18
 }
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*mer 5

你可以使用一个 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);
Run Code Online (Sandbox Code Playgroud)

结果:

2015-03-22 17:15:06.468 Untitled[23770:2311273] Result: {
    NAME = MyProduct3;
    UUID = 18;
}
Run Code Online (Sandbox Code Playgroud)

如此处所述: 如何在 NSSet 或 NSArray 中搜索具有特定属性的特定值的对象?

  • 如果您使用的是“firstObject”,则不需要检查“count”。 (2认同)