マップ上のピンをクラスター化し、タップすると展開するのに役立つ拡張機能を使用しています。Swift 4 から Swift 4.2 への更新、そして現在の Swift 5 では、提案された新しい Swift 構文を使用するたびにアプリがキャッシュされます。
Swift 4 の現在のコードは次のとおりです。
extension MKMapRect {
init(minX: Double, minY: Double, maxX: Double, maxY: Double) {
self.init(x: minX, y: minY, width: abs(maxX - minX), height: abs(maxY - minY))
}
init(x: Double, y: Double, width: Double, height: Double) {
self.init(origin: MKMapPoint(x: x, y: y), size: MKMapSize(width: width, height: height))
}
var minX: Double { return MKMapRectGetMinX(self) }
var minY: Double { return MKMapRectGetMinY(self) }
var midX: Double { return MKMapRectGetMidX(self) }
var midY: Double { return MKMapRectGetMidY(self) }
var maxX: Double { return MKMapRectGetMaxX(self) }
var maxY: Double { return MKMapRectGetMaxY(self) }
func intersects(_ rect: MKMapRect) -> Bool {
return MKMapRectIntersectsRect(self, rect)
}
func contains(_ coordinate: CLLocationCoordinate2D) -> Bool {
return MKMapRectContainsPoint(self, MKMapPointForCoordinate(coordinate))
}
}
すべての変数について、「'MKMapRectGetMinX' はプロパティ 'MKMapRect.minX' に置き換えられました」というエラーが表示されます。
動作していない更新された Swift 5 構文は次のとおりです。
extension MKMapRect {
init(minX: Double, minY: Double, maxX: Double, maxY: Double) {
self.init(x: minX, y: minY, width: abs(maxX - minX), height: abs(maxY - minY))
}
init(x: Double, y: Double, width: Double, height: Double) {
self.init(origin: MKMapPoint(x: x, y: y), size: MKMapSize(width: width, height: height))
}
var minX: Double { return self.minX }
var minY: Double { return self.minY }
var midX: Double { return self.midX }
var midY: Double { return self.midY }
var maxX: Double { return self.maxX }
var maxY: Double { return self.maxY }
func intersects(_ rect: MKMapRect) -> Bool {
return self.intersects(rect)
}
func contains(_ coordinate: CLLocationCoordinate2D) -> Bool {
return self.contains(MKMapPoint.init(coordinate))
}
}
この新しい構文では、この関数を通るすべてのパスがそれ自体を呼び出します。誰かが私にいくつかの選択肢を教えてくれることを願っています。