0

我有一组自定义 UIView 对象,其中 2 个或更多对象具有相同的中心,我必须从中构造另一个具有不同中心的数组。最好的方法是什么?

我尝试使用下面的代码,但它不起作用。

self.distinctObjects = [NSMutableArray arrayWithCapacity:iAllObjects.count];

for (MyCustomView *customView in iAllObjects)
{
     BOOL hasDuplicate = [[self.distinctObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.center == %@", customView.center]] count] > 0;

     if (!hasDuplicate) {
                [self.distinctObjects addObject:customView];
     }
}
4

2 回答 2

1

您不能在. struct_ 同样直接比较浮点值也不是一个好主意。你应该遵循这个答案。只需替换为、等。这应该很容易。centerCGPointNSPredicate[annotation coordinate].latitudemyView.center.x[annotation coordinate].longitudemyView.center.y

顺便说一句,您的代码具有 O(n^2) 复杂性,但如果数组很小,这可能不是问题。

于 2013-10-13T19:14:59.397 回答
0

我用下面的代码解决了这个问题:

NSMutableArray *uniqueCenters = [NSMutableArray arrayWithCapacity:iAllObjects.count];
self.distinctObjects = [NSMutableArray arrayWithCapacity:iAllObjects.count];

for (MyCustomView *customView in iAllObjects)
{
    if (![uniqueCenters containsObject:[NSValue valueWithCGPoint:customView.center]]) {
        [uniqueCenters addObject:[NSValue valueWithCGPoint:customView.center]];

        [self.beacons addObject:customView];
    }
}
于 2013-10-13T23:01:09.657 回答