NSArray从键值获取整个对象

时间:2015-03-22 15:27:48

标签: ios

一个人必须盲目不看与上述问题的区别。

我有一个类似

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

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

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

我正在尝试找到一个优雅的解决方案,因为每个UUID在阵列中都是唯一的。

1 个答案:

答案 0 :(得分:4)

您可以使用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?