I want to convert an MKMapPoint to a NSValue. In Objective-C i can do it with the following statement:
MKMapPoint point = MKMapPointForCoordinate(location.coordinate);
NSValue *pointValue = [NSValue value:&point withObjCType:@encode(MKMapPoint)];
How can i do that in Swift? Thanks!
It isn't possible in Swift, but you can still create a category in ObjC and use it in your Swift project
// NSValue+MKMapPoint.h
@interface NSValue (MKMapPoint)
+ (NSValue *)valueWithMKMapPoint:(MKMapPoint)mapPoint;
- (MKMapPoint)MKMapPointValue;
@end
// NSValue+MKMapPoint.m
@implementation NSValue (MKMapPoint)
+ (NSValue *)valueWithMKMapPoint:(MKMapPoint)mapPoint {
return [NSValue value:&mapPoint withObjCType:@encode(MKMapPoint)];
}
- (MKMapPoint)MKMapPointValue {
MKMapPoint mapPoint;
[self getValue:&mapPoint];
return mapPoint;
}
@end
The usage in Swift:
let mapValue = CGValue(MKMapPoint: <your map point>)
let mapPoint = mapValue.MKMapPointValue();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With