cuốn sách gpt4 ai đã làm

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

In lại Tác giả: Walker 123 更新时间:2023-11-29 02:58:27 29 4
mua khóa gpt4 Nike

tôi có một cái NSArray 对象,每个对象都包含一个“键”字段

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

Ví dụ

@interface MyObject

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

@kết thúc


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 数组,但我不清楚如何做到这一点

câu trả lời hay nhất

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

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

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

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

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress