gpt4 book ai didi

swift - 二元运算符 '==' 不能应用于类型 '[MKAnnotation]' 和 'MKAnnotation' 的操作数

转载 作者:行者123 更新时间:2023-11-28 12:44:52 28 4
gpt4 key购买 nike

我正在开发一个 tvOS 应用程序,我希望能够在注释之间滑动。我将注释存储在字典中,并将字典存储在数组中以备将来使用。我只是为加拿大、美国和墨西哥绘制了三个注释。我希望能够在这些注释之间滑动 Remote 。单击注释时,您将转至有关该国家/地区的信息。

let countriesArray = ["Canada", "Mexico", "United States of America"]  
var annotationArray = [MKPointAnnotation]()
var locationDictionary = [String: AnyObject]()
var locationArray = [AnyObject]()

绘制完三个国家后,我的数组如下所示:

locationArray [{  
annotation = "<MKPointAnnotation: 0x7fc021b01f70>";
country = Canada;
latitude = "71.47385399229037";
longitude = "-96.81064609999999";
}, {
annotation = "<MKPointAnnotation: 0x7fc0219dcf90>";
country = "United States of America";
latitude = "37.99472997055178";
longitude = "-95.85629150000001";
}, {
annotation = "<MKPointAnnotation: 0x7fc02260ff70>";
country = Mexico;
latitude = "23.94480686844645";
longitude = "-102.55803745";
}]

例如,当向下轻扫 Apple Remote 时,我在下面的 if 条件下收到以下错误。

二元运算符“==”不能应用于“[MKAnnotation]”和“MKAnnotation”类型的操作数

如何将数组中的注释与选定的进行比较?

func swipedDown(sender:UISwipeGestureRecognizer) {  
print("Down")

let selectedAnnotation = mapView.selectedAnnotations

for x in 0 ... locationArray.count - 1 {

let value = locationArray[x].valueForKey("annotation") as! MKAnnotation

if selectedAnnotation == value { //error

let currentLocation = locationArray[x].valueForKey("country")

print("Your on \(currentLocation)")
}
}
}

最佳答案

由于 mapView.selectedAnnotations 返回一个 MKAnnotation 数组,即 [MKAnnotation],将其与单个 MKAnnotation 进行比较 值与 operator == 不起作用。您需要决定如何处理数组中的多个值 - 具体来说,当数组中的任何注释匹配 value 或第一个匹配 value 时,比较是否应该为真,或者全部匹配 value

如果需要检查一个数组元素是否与值匹配,可以使用contains,如下所示:

if  (selectedAnnotation.contains { $0.title == value.title && $0.subtitle == value.subtitle }) {
let currentLocation = locationArray[x].valueForKey("country")
print("Your on \(currentLocation)")
}

编辑:最初尝试使用非闭包contains失败了,因为MKAnnotation不符合Equatable协议(protocol)。谢谢,dan ,为了捕获这个!

关于swift - 二元运算符 '==' 不能应用于类型 '[MKAnnotation]' 和 'MKAnnotation' 的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38376706/

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