NSArray从键值中获取整个对象[重复]

Posted

技术标签:

【中文标题】NSArray从键值中获取整个对象[重复]【英文标题】:NSArray get entire object from key value [duplicate] 【发布时间】: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。 这里欢迎任何形式的争论。 权力越大,责任越大。下次请仔细阅读。 【参考方案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 你是对的。更新了答案。

以上是关于NSArray从键值中获取整个对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从键值对数组创建对象?

使用 Lodash 从键值对数组中创建对象

RestKit 对象映射:如何从键值映射到新对象/关系?

Mongodb聚合:从键值对象返回不同值的计数

根据 NSDictionary 键值将 NSArray 拆分为子数组

NSPredicate predicateWithFormat 从键中删除 $ 符号