我正在创建一个MKMapView应用程序,需要在plist中保存几个MKMapRect类型的变量,以便在需要时引用它们。
我知道MKMapRect有MKMapPoint origin和MKMapSize size。它们每个都有两个双精度值,可以保存为nsnumber,但保存它们似乎是一项很大的工作,最重要的是,我必须读回这些值,并将它们转换为MKMapRect变量。
所以我的问题是,有没有什么简单的方法可以存储MKMapRect并从plist中检索回来。
谢谢,
罗宾。
发布于 2011-08-03 16:27:59
使用MKStringFromMapRect将其转换为字符串。
发布于 2011-08-03 21:22:33
在这里:
- (NSString *)save:(MKMapRect)rect
{
return MKStringFromMapRect(rect);
}
- (MKMapRect)load:(NSString *)str
{
MKMapRect mapRect;
CGRect rect = CGRectFromString(str);
mapRect.origin.x = rect.origin.x;
mapRect.origin.y = rect.origin.y;
mapRect.size.width = rect.size.width;
mapRect.size.height = rect.size.height;
return mapRect;
}发布于 2013-11-11 13:45:24
我创建了一个类别,将地图rect保存为用户默认值:
NSUserDefaults+MKMapRect.h
@interface NSUserDefaults (MKMapRect)
//stores a map rect in user defaults
-(void)setMapRect:(MKMapRect)mapRect forKey:(NSString*)key;
//retrieves the stored map rect or returns the world rect if one wasn't previously set.
-(MKMapRect)mapRectForKey:(NSString*)key;
@endNSUserDefaults+MKMapRect.m
@implementation NSUserDefaults (MKMapRect)
-(void)setMapRect:(MKMapRect)mapRect forKey:(NSString*)key{
NSMutableDictionary *d = [NSMutableDictionary dictionary];
[d setObject:[NSNumber numberWithDouble:mapRect.origin.x] forKey:@"x"];
[d setObject:[NSNumber numberWithDouble:mapRect.origin.y] forKey:@"y"];
[d setObject:[NSNumber numberWithDouble:mapRect.size.width] forKey:@"width"];
[d setObject:[NSNumber numberWithDouble:mapRect.size.height] forKey:@"height"];
[self setObject:d forKey:key];
}
-(MKMapRect)mapRectForKey:(NSString*)key{
NSDictionary *d = [self dictionaryForKey:key];
if(!d){
return MKMapRectWorld;
}
return MKMapRectMake([[d objectForKey:@"x"] doubleValue],
[[d objectForKey:@"y"] doubleValue],
[[d objectForKey:@"width"] doubleValue],
[[d objectForKey:@"height"] doubleValue]);
}
@endhttps://stackoverflow.com/questions/6923494
复制相似问题