gpt4 book ai didi

objective-c - 如何通过 CGRect 过滤 NSArray 中的 CGPoints

转载 作者:可可西里 更新时间:2023-11-01 05:06:35 26 4
gpt4 key购买 nike

我有一个带有 CGPointsNSArray。我想通过仅包含矩形内的点来过滤此数组。

我如何制定一个 NSPredicate 使得每个点都满足这个谓词:

CGRectContainsPoint(windowRect, point);

这是目前的代码:

NSArray *points = [NSArray arrayWithObjects: [NSValue valueWithCGPoint:pointAtYZero] ,
[NSValue valueWithCGPoint:pointAtYHeight],
[NSValue valueWithCGPoint:pointAtXZero],
[NSValue valueWithCGPoint:pointAtXWidth],
nil];


NSPredicate *inWindowPredicate = [NSPredicate predicateWithFormat:@"CGRectContainsPoint(windowRect, [point CGPointValue])"];
NSArray *filteredPoints = [points filteredArrayUsingPredicate:inWindowPredicate];

最佳答案

你不能用谓词格式语法来做到这一点,但你可以使用 block :

NSArray *points = ...;
CGRect windowRect = ...;
NSPredicate *inWindowPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
CGPoint point = [evaluatedObject CGPointValue];
return CGRectContainsPoint(windowRect, point);
}];
NSArray *filteredPoints = [points filteredArrayUsingPredicate:inWindowPredicate];

请注意,不可能对核心数据提取请求使用基于 block 的谓词。

关于objective-c - 如何通过 CGRect 过滤 NSArray 中的 CGPoints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10668694/

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