gpt4 book ai didi

ios - 来自 indexesOfObjectsPassingTest 的排序数组?

转载 作者:行者123 更新时间:2023-11-28 20:45:41 24 4
gpt4 key购买 nike

我有一个名为 arrayToFilter 的 myObjects 数组。 myObject 的一个(元素?)是一组 bezierpaths。我将特定索引 (thispath) 的 bezierpath 与第二条路径进行比较,并使 filteredArray 仅由路径重叠一定量 (20%) 的那些对象组成。我使用 indexedOfObjectsPassingTest 来喜欢这样:

    NSIndexSet * index = [[arrayToFilter objectsAtIndexes:index]       indexesOfObjectsPassingTest:^BOOL (id obj, NSUInteger idx, BOOL *stop){
MyObject * anobject = obj;
UIBezierPath * thispath = [anobject.allPaths objectAtIndex:i];
NSInteger overlap = [self percentPathBoxOverlap:path: thispath];

return overlap>20;
}];

if ([index count] !=0){
filteredArray = [arrayToFilter objectsAtIndexes:index] ;
}

这很好用。但我想做的是让 filteredArray 与那些重叠值较高的对象一起排序。由于重叠是根据当前路径和 thispath 动态计算的,我不知道如何使用任何排序数组方法。

最佳答案

您可以先创建一个包含路径和重叠数据的字典数组。这将需要对您当前通过过滤器搜索和提取的方法进行一些修改。

NSMutableArray * searchResults = [NSMutableArray array];
[arrayToSearch enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
MyObject * anobject = obj;
UIBezierPath * thispath = [anobject.allPaths objectAtIndex:i];

NSInteger overlap = [self percentPathBoxOverlap:path: thispath];

if ( overlap > 20 ) {
NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:anObject, @"object", [NSNumber numberWithInteger:overlap], @"overlap", nil];
[searchResults addObject:dictionary];
}
}];

现在您可以使用字典的 overlap 键对该数组进行排序。

NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@"overlap" ascending:NO];
NSArray * sortedArray = [searchResults sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

现在 sortedArray 将具有路径和重叠信息的排序列表。

关于ios - 来自 indexesOfObjectsPassingTest 的排序数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500013/

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