- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 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/
我有一个名为 arrayToFilter 的 myObjects 数组。 myObject 的一个(元素?)是一组 bezierpaths。我将特定索引 (thispath) 的 bezierpath
indexesOfObjectsPassingTest 的声明:在 Swift 中看起来像这样, func indexesOfObjectsPassingTest(predicate: ((AnyOb
我有这个代码: NSIndexSet *indexes = [anOrderedSet indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx
我是一名优秀的程序员,十分优秀!