NSUserDefaults与设置

1.我们可以通过NSUserDefaults类来保存一些设置。例如:

- (IBAction)changeMapType:(id)sender
{
    [[NSUserDefaults standardUserDefaults] 
                    setInteger:[sender selectedSegmentIndex]
                        forKey:WhereamiMapTypePrefKey];
    
    switch([sender selectedSegmentIndex])
    {
        case 0:
        {
            [worldView setMapType:MKMapTypeStandard];
        } break;
        case 1:
        {
            [worldView setMapType:MKMapTypeSatellite];
        } break;
        case 2:
        {
            [worldView setMapType:MKMapTypeHybrid];
        } break;
    }
}

保存地图中所要显示的selectedSegmentIndex,NSUserDefaults会将数据保存在Library/Preferences目录下,文件名为应用的程序包标识(bundle identifier)加后缀.plist。

同样的,可以使用该类来获取之前保存的内容。

代码如下:

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSInteger mapTypeValue = [[NSUserDefaults standardUserDefaults] 
                                integerForKey:WhereamiMapTypePrefKey];
    
    // Update the UI
    [mapTypeControl setSelectedSegmentIndex:mapTypeValue];
    
    // Update the map
    [self changeMapType:mapTypeControl];
    
    // Create location manager object
    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    
    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    
    [worldView setShowsUserLocation:YES];
    
    [self.window makeKeyAndVisible];
    return YES;
}

2.NSuserDefaults的注册域与应用域

应用中有些临时的默认值存放在NSuserDefaults的注册域中,而用户设置的偏好设置则存放在另一个被叫做应用域的域中。默认情况下,应用域是空的,当用户第一次修改某个设置时,相应的值会通过指定的键加入应用域。当通过NSUserDefaults对象查找某个偏好设置的值时,该对象会先在应用域中查找,如果能找到则返回相应的值,如果没找到,则到注册域中找并返回。

设置注册域的方法:先创建一个NSDictionary对象,其中的键值对就是需要设置的默认偏好设置,然后向NSUserDefaults对象发送registerDefaults:消息,并将NSDictionary作为参数传入。

3.新创建的类在收到任何其他消息前,会先收到initialize消息,所以在注册域中设置偏好设置就在该方法中设置。代码如下:

+ (void)initialize
{
    NSDictionary *defaults = [NSDictionary 
                            dictionaryWithObject:[NSNumber numberWithInt:1]
                                          forKey:WhereamiMapTypePrefKey];
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值