首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在plist中保存MKMapRect

如何在plist中保存MKMapRect
EN

Stack Overflow用户
提问于 2011-08-03 16:16:15
回答 4查看 1.1K关注 0票数 5

我正在创建一个MKMapView应用程序,需要在plist中保存几个MKMapRect类型的变量,以便在需要时引用它们。

我知道MKMapRect有MKMapPoint originMKMapSize size。它们每个都有两个双精度值,可以保存为nsnumber,但保存它们似乎是一项很大的工作,最重要的是,我必须读回这些值,并将它们转换为MKMapRect变量。

所以我的问题是,有没有什么简单的方法可以存储MKMapRect并从plist中检索回来。

谢谢,

罗宾。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-03 16:27:59

使用MKStringFromMapRect将其转换为字符串。

票数 7
EN

Stack Overflow用户

发布于 2011-08-03 21:22:33

在这里:

代码语言:javascript
复制
- (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;
}
票数 5
EN

Stack Overflow用户

发布于 2013-11-11 13:45:24

我创建了一个类别,将地图rect保存为用户默认值:

NSUserDefaults+MKMapRect.h

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6923494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档