gpt4 book ai didi

iOS Swift : how to check if Object exists in an Array so I don't add it to it, 或用它重新创建 GMSMarker?

转载 作者:搜寻专家 更新时间:2023-10-31 22:46:40 24 4
gpt4 key购买 nike

我一直在为 iOS sdk 使用 gmaps 并遇到这个问题:每次 map 平移或缩放时并完成(我使用的是委托(delegate)idleAtCameraPosition)在我的服务器端我比较 map 中心的坐标,以便标记它周围的地方。当它们距离中心坐标足够近(1 公里)时,我将这些位置保存在“位置”对象数组中。

我的问题是我无法避免将重复的对象添加到数组中,所以每次我平移 map 但不改变相机位置时,屏幕上的现有标记都会重新显示添加到 Places 数组。我尝试使用此代码,但它不起作用并且数组可以无限增长直到应用程序崩溃:

   if(!arrayProp.contains(place)){
arrayProp.append(place)
}

但它不起作用。

我还有另一个 GMSMarkers 数组,它从 Places 数组中获取数据;尝试使用此代码来避免使用已存在的 Places 对象在 map 中重新创建标记:

for place in arrayProp {
let pinPlace = PlaceMarker(propied: place)//custom GMSMarker class
if(self.markerArray.contains(pinPlace) == false ) {
self.markerArray.append(pinPlace)
pinPlace.map = self.mapaGoogle
} else {
pinPlace.map = nil
}
}

任何帮助将不胜感激;谢谢

最佳答案

可能您的 Place 使用的是 Equatable 的默认定义,这不是您所期望的。您需要类似这样的东西才能使 contains() 按预期工作:

struct Place: Equatable {
let there: Bool
}

func ==(lhs: Place, rhs: Place) -> Bool {
return lhs.there == rhs.there
}

检查 Place 的定义,如果它使用仅检查必要字段的默认值,则创建一个。

关于iOS Swift : how to check if Object exists in an Array so I don't add it to it, 或用它重新创建 GMSMarker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36848141/

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