也许这个问题之前已经得到了回答,或者答案是如此明显,但我一直在寻找几天,但找不到这个问题的答案。我很感激任何帮助,因为我在我的智慧结束。
class marker {
var latitude = Double()
var longitude = Double()
var coordinate = CLLocationCoordinate2DMake(latitude, longitude)
}
let someCoordinate = CLLocationCoordinate2DMake(someLatitude, someLongitude)
现在假设我有一个名为“markers”的数组,其中包含10个标记对象,所有属性都已初始化。如何找到坐标值与someCoordinate的值匹配的标记项的索引?
修改
在尝试下面iosdk的建议时,我发现我正在尝试比较作为CLLocationCoordinate2D的marker.coordinate属性。这没有像我预期的那样奏效。相反,我试过这个并且它有效:
let markerIndex = indexOfMarker(markers) { $0.position.latitude == latitude && $0.position.longitude == longitude }
答案 0 :(得分:2)
struct SomeStruct {
let a, b: Int
}
let one = SomeStruct(a: 1, b: 1)
let two = SomeStruct(a: 2, b: 2)
let three = SomeStruct(a: 3, b: 3)
let ar = [one, two, three]
let ans = ar.indexOf { $0.a == 2 } // 1?
或者,在Swift 1上,indexOf函数可以是:
func indexOfOld<S : SequenceType>(seq: S, predicate: S.Generator.Element -> Bool) -> Int? {
for (index, value) in enumerate(seq) {
if predicate(value) {
return index
}
}
return nil
}
你要用上面的最后一行替换:
let ans = indexOfOld(ar) { $0.a == 2 } // 1?