我正在创建一个MKMapView应用程序,需要在plist中保存一些MKMapRect类型变量,以便在需要时引用它们。
我知道MKMapRect有MKMapPoint origin
和MKMapSize size
。并且它们每个都有2个双值,可以保存为nsnumber
但保存所有这些值似乎是很多工作,最重要的是我必须读取值并将它们转换为MKMapRect变量。
所以我的问题是,是否有任何简单的方法来存储MKMapRect并从plist中回溯它。
谢谢,
罗宾。
答案 0 :(得分:7)
使用MKStringFromMapRect将其变为字符串。
答案 1 :(得分:5)
有:
- (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;
}
答案 2 :(得分:2)
我创建了一个类别来将地图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;
@end
+ NSUserDefaults的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]);
}
@end
答案 3 :(得分:0)
您可以在CGRect中复制MKMapRect数据,然后将CGRect存储为带有NSStringFromgCGRect()和CGRectFromString()的字符串