gpt4 book ai didi

ios - 如何使用谓词从一个 NSArray 中选择包含在另一个 NSArray 中的对象

转载 作者:行者123 更新时间:2023-11-29 02:58:27 29 4
gpt4 key购买 nike

我有一个 NSArray 对象,每个对象都包含一个“键”字段

我有另一个带有嵌套NSArraysNSArray,通过不同的字段“按字段分组”对这些对象进行分组,例如显示名称(字母分组)

例如

@interface MyObject

@property (nonatomic) int key;
@property (nonatomic,strong) NSString *groupByKey;

@end


NSArray *aBounchOfObjectsInAFlatList = @[obj1,obj2,obj3....];

NSArray *groupByArrayOfObjects = @[@[obj1_tag,obj2_tag],@[objn_tag,objk_tag]....];

重要的是要注意 obj1 != obj1_tag - 它们只共享“groupByKey”和/或“key”的值。

我想从平面数组中找到每个 obj_tag 的索引,其中 (obj_tag.key == obj.key)

现在我正在运行 2 个循环并保存计数器值 - 为匹配项创建索引路径。

我认为有一种明确的方法使用 NSPredicates 为相应的对象创建 NSIndexPaths 数组,但我不清楚如何做到这一点

最佳答案

NSPredicate 只是一个谓词,仅此而已。它应用于某些对象并且产生 YES 或 NO。谓词可用于过滤数组,但由于谓词本身应用于每个数组元素,因此它不“知道”位置被测试对象的(或索引)。因此,NSPredicate 无法创建 NSIndexPath 数组。

NSArray 方法 indexOfObjectPassingTest: 对于查找位置很有用数组中的对象,但即使该方法也必须循环遍历所有数组元素找到对象。因此,它可能有助于使代码更短或更具可读性,但是它不会改变性能。

如果groupByArrayOfObjects非常大,那么您可以首先创建从每个键到相应索引路径的映射(NSDictionary)。这仅需要对(嵌套)数组进行一次枚举。然后你可以使用这个映射来获取另一个数组中每个元素的索引路径aBounchOfObjectsInAFlatList

关于ios - 如何使用谓词从一个 NSArray 中选择包含在另一个 NSArray 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590425/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com