【问题标题】:Check Parse duplicates (iOS)检查解析重复项(iOS)
【发布时间】:2016-01-09 14:07:01
【问题描述】:

我在 Parse.com 上有一个类,它有一个“GeoPoint”列(每个对象都有经度和纬度)。

我想检查是否有两个具有相同 GeoPoint 的对象。

我已经尝试过了,但它不起作用(打印没有重复的对象):

PFQuery *query=[PFQuery queryWithClassName:@"Schools"];
query.limit=1000;
[self.myObjects addObjectsFromArray:[[query findObjects] mutableCopy]];

NSMutableArray *geoPoints=[NSMutableArray array];
for (PFObject *object in self.myObjects) {
    [geoPoints addObject:[object objectForKey:@"GeoPoint"]];
}

NSCountedSet *cs=[[NSCountedSet alloc] initWithArray:geoPoints];

int num=1;
for (PFObject *object in cs) {
    if ([cs countForObject:object]>1) {
        NSLog(@"%@ %@",[[self.myObjects objectAtIndex:num] objectForKey:@"Name"], [[self.myObjects objectAtIndex:num] objectForKey:@"Address"]);
        num++;
    }
}

如何检查 NSArray/Parse 本身的重复项。

谢谢!

【问题讨论】:

  • 为什么要了解重复项?您如何首先添加这两点?如果它们是一个问题,为什么你没有云代码来检查保存时的欺骗?
  • @Wain 用户不向 Parse 添加对象(该应用程序只是获取我预先准备的数据)所以它需要是一次性事件,这就是为什么我没有云代码。我在地图上为每所学校显示标记,如果有两所学校具有相同的 geoPoint,一个标记将位于另一个之上,所以我想找到另一所学校具有相同 geoPoint 的对象并将其移动一点到一边,这将解决我的问题。我需要知道如何找到这些重复项。

标签: ios objective-c iphone cocoa-touch parse-platform


【解决方案1】:

我会采取不同的方法。当您放大和缩小地图时,相距较远的图钉将开始重叠。因此,您应该对这个问题有一个通用的孤例(而不是编辑源数据)。

采取的方法称为地图针聚类。每当地图缩放/大头针更新时,算法就会运行以确定哪些大头针靠得很近并应分组。这导致地图上的一个引脚由多个原始引脚(注释)支持。选择图钉后,您可以显示所有注释的信息。

您可以使用多种实现方式:mkmapview pin clustering

【讨论】:

  • 标记相互隐藏,所以这不是解决方案,底部标记永远不可见,所以我需要更改数据,不幸的是。顺便说一句,我也需要这个东西来安排我的地图,所以GMSMapView有类似的东西吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2012-10-11
  • 2017-09-16
  • 2016-10-12
  • 2015-07-14
相关资源
最近更新 更多