【问题标题】:Loading a stored annotation's subtitle with NSUserDefaults when viewDidLoadviewDidLoad 时使用 NSUserDefaults 加载存储的注释的字幕
【发布时间】:2011-01-01 17:36:40
【问题描述】:

基本上,我尝试做的是将字幕(街道地址)保存到注释中。当应用程序终止并重新启动时,我希望这个存储的字幕显示在注释的标注中。我究竟做错了什么?我只是无法让它工作......

storeLocation.m

- (void)setCoordinate:(CLLocationCoordinate2D)coor {
                  ............

                    NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
                    [userDef setValue:subtitle forKey:@"SavedAddress"];
                    [userDef synchronize];
                    NSLog(@"Stored subtitle");
                }

mainViewController.m

-(void)viewDidLoad {
                NSString *savedAddress = [[NSUserDefaults standardUserDefaults] objectForKey:@"SavedAddress"];
    if (savedAddress) {
    }                
}

非常感谢您对此的帮助...提前致谢!

【问题讨论】:

  • 你能说明什么是“不工作”吗?您是否使用 NSLog 打印出值并尝试找出存储的值返回了什么?
  • 重新启动应用程序时根本不返回任何字符串。

标签: iphone ios4 nsuserdefaults mkannotation mkannotationview


【解决方案1】:

尝试srtingForKey: 而不是objectForKey:

NSString *savedAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"SavedAddress"];

【讨论】:

    【解决方案2】:

    我在

    中使用 if 语句解决了这个问题
    -(NSString *)subtitle. 
    

    这样:

    -(NSString *)subtitle{
    
        NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
        if ([userDef boolForKey:@"SavedAddress"]) {
            NSString *savedAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"SavedAddress"];
            return savedAddress;
        }
    
        else {
            return subtitle;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      相关资源
      最近更新 更多