Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert MKMapPoint to NSValue in Swift

Tags:

casting

ios

swift

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!

like image 635
Leo Avatar asked Sep 26 '22 19:09

Leo


1 Answers

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();
like image 101
Ondrej Stocek Avatar answered Sep 30 '22 08:09

Ondrej Stocek