2009-09-08 77 views

回答

2

由於CLLocationCoordinate2D是一個結構,因此您可以比較兩個MKAnnotationcoordinate @屬性與==。例如:

MKAnnotation *a1; 
MKAnnotation *a2; 

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

隨着警告:你所關心比較浮點值在CLLocationCoordinate2D(的CLLocationCoordinate2D緯度和經度字段是CLLocation類型,是typdef ED作爲double的)。與往常一樣,比較兩個浮點值的平等性是很微妙的。您可能希望獨立進行經緯度值的更多參與比較(例如檢查其絕對差值是否在一定範圍內)。有關此問題的更多信息,請參閱Numerical Recipes

如果要比較的所有屬性,像

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

(再次保存警告),會做的伎倆。

+0

你沒有真正回答他的問題。你的具體到他的例子,但看起來他想要一個通用的解決方案。 – 2009-09-08 21:22:40

+0

嗯,他確實說過「特別是我正在比較符合MKAnnotation的兩個對象」,所以我認爲我至少回答了他的具體問題。 – 2009-09-08 21:36:04

+0

我有點同意;我不確定如何才能真正「根據協議比較平等」,除非您的意思是您首先要在實例上調用-conformsToProtocol:。 – Wevah 2009-09-09 08:04:02