更新 MKMapRect 扩展的 Swift 语法
Updating Swift Syntax for MKMapRect Extension
我正在使用一个扩展程序,它可以帮助我的地图上的图钉聚集在一起并在点击时展开。随着从 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))
}
}
使用这个新语法,所有通过这个函数的路径都会调用它自己。希望有人能给我一些选择。
您根本不需要任何与点相关的属性,因为它们已经存在于 Swift 5 中,并且与您给它们指定的名称相同。 intersects
.
也是如此
您只需要自定义初始化程序和 contains
方法。
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))
}
func contains(_ coordinate: CLLocationCoordinate2D) -> Bool {
return self.contains(MKMapPoint.init(coordinate))
}
}
我正在使用一个扩展程序,它可以帮助我的地图上的图钉聚集在一起并在点击时展开。随着从 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))
}
}
使用这个新语法,所有通过这个函数的路径都会调用它自己。希望有人能给我一些选择。
您根本不需要任何与点相关的属性,因为它们已经存在于 Swift 5 中,并且与您给它们指定的名称相同。 intersects
.
您只需要自定义初始化程序和 contains
方法。
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))
}
func contains(_ coordinate: CLLocationCoordinate2D) -> Bool {
return self.contains(MKMapPoint.init(coordinate))
}
}