Swift结构扩展函数 - “无法在'self'中指定'origin'”
Swift中的结构可以包含函数并且可以具有扩展。凉!看起来像一个简洁的方法,使这个功能可用于更多的类,并减少参数传递。这里的功能原本看着地图视图控制器的方式:Swift结构扩展函数 - “无法在'self'中指定'origin'”
func expandTrackRectToCoordinate(coordinate : CLLocationCoordinate2D) {     let point = MKMapPointForCoordinate(coordinate) 
    let newRect = MKMapRectMake(point.x, point.y, 0.0, 0.0) 
    if MKMapRectIsNull(trackRect) { 
     trackRect = MKMapRectMake(point.x, point.y, 0.0, 0.0) 
    } else { 
     trackRect = MKMapRectUnion(trackRect, newRect) 
    } 
} 
trackRect是班上的MKMapRect成员。
MKMapRect扩展为包含每个点,以便地图可以根据需要重置为整个区域,显示所有点。
我试图让这对MKMapRect扩展(部分 - 显示,直到错误):
extension MKMapRect { func expandToIncludeCoordinate(coordinate : CLLocationCoordinate2D) { 
    let point = MKMapPointForCoordinate(coordinate) 
    let newRect = MKMapRectMake(point.x, point.y, 0.0, 0.0) 
    if MKMapRectIsNull(self) { 
     self.origin = point  <-------- Cannot assign to 'origin' in 'self' 
     self.size = CGSizeZero 
    } else { 
我没想到能够只分配给自己,但我没想到能分配给结构的成员。如何才能做到这一点?
回答:
的Structs斯威夫特通常被认为是不可变的,除非您特别纪念他们的方法为mutating:
extension MKMapRect {     mutating func expandToIncludeCoordinate(coordinate : CLLocationCoordinate2D) { 
     let point = MKMapPointForCoordinate(coordinate) 
     let newRect = MKMapRectMake(point.x, point.y, 0.0, 0.0) 
     if MKMapRectIsNull(self) { 
      self.origin = point 
      // Another problem here is that CGSize is not the same as MKMapSize 
      self.size = MKMapSize(width: 0, height: 0) 
     } else { 
      ... 
      ... 
     } 
    } 
} 
Reference
以上是 Swift结构扩展函数 - “无法在'self'中指定'origin'” 的全部内容, 来源链接: utcz.com/qa/261557.html

