NSUserDefaults在iOS7中无法正常工作

时间:2014-11-11 22:15:01

标签: iphone ios7 localization nsuserdefaults

+(NSString *)languageKey{

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSArray *languages = [defaults objectForKey:@"AppleLanguages"];


    NSString *lang = [languages objectAtIndex:0];    

    if([lang isEqualToString:@"en"])
      return @"en";
    else if([lang isEqualToString:@"ar"])
      return @"ar";

    return @"en";    

}

+(NSString *)localizedStringForKey:(NSString *)key{

    NSString *path;
    if([[self languageKey] isEqualToString:@"en"])
        path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
    else if([[self languageKey] isEqualToString:@"ar"])
        path = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"];

    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];

    return str;
}

有时我在iOS7及以下版本中出现错误密钥正常工作。这是Xcode6.0的错误吗? 如何摆脱这个问题

提前谢谢

1 个答案:

答案 0 :(得分:0)

当Objective-C和Xcode-6与UserDefaults一起使用时,根据我对NSUserDefaults的体验,您需要非常小心保存和检索数据的方式:

我保存这样的数据:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"data" forKey:@"key"];
[prefs synchronize];

我检索这样的数据:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *theString = [prefs stringForKey:@"key"];

我在检索数据时也看到[默认同步],我认为没有必要,因为你没有保存数据,祝你好运。