gpt4 book ai didi

iphone - 通过协议(protocol)比较/相等两个对象

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:43 24 4
gpt4 key购买 nike

有没有一种方法可以纯粹根据它们实现的协议(protocol)来比较两个 Objective-C 对象。

具体来说,我正在比较两个符合 MKAnnotation 的对象(iPhone mapkit 注释)。给定两个符合协议(protocol)的对象,我想确定它们在协议(protocol)方面是否相等。在这种情况下,这意味着至少 coordinate属性相同。

最佳答案

因为 CLLocationCoordinate2D 是一个结构体,你可以比较两个 MKAnnotationcoordinate @properties 和 ==。示例:

MKAnnotation *a1;
MKAnnotation *a2;

if(a1.coordinate == a2.coordinate) {
//coordinates equal
}

注意:您需要比较 CLLocationCoordinate2D 中的浮点值(CLLocationCoordinate2D 的纬度和经度字段属于 CLLocationtypedef编辑为double)。与往常一样,比较两个浮点值是否相等充满了微妙之处。您可能希望独立地对纬度和经度值进行更复杂的比较(例如,检查它们的绝对差异是否在某个小范围内)。参见 Numerical Recipes有关此问题的更多信息。

如果你想比较所有的属性,比如

(a1.coordinate == a2.coordinate) && [a1.title isEqualToString:a2.title] && [a1.subtitle isEqualToString:a2.subtitle]

(再次使用保存警告)可以解决问题。

关于iphone - 通过协议(protocol)比较/相等两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1396114/

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