Iphone NSUserDafults在iOS7中工作不正常
有时我在iOS7及以下版本中得到了错误的密钥,工作正常。这是Xcode6.0错误吗? 如何解决这个问题Iphone NSUserDafults在iOS7中工作不正常,iphone,ios7,localization,nsuserdefaults,Iphone,Ios7,Localization,Nsuserdefaults,有时我在iOS7及以下版本中得到了错误的密钥,工作正常。这是Xcode6.0错误吗? 如何解决这个问题 提前感谢很好,Objective-C和Xcode-6与UserDefaults配合使用效果很好,根据我在使用NSUserDefaults时的经验,您需要非常小心保存和检索数据的方式: 我这样保存数据: +(NSString *)languageKey{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
提前感谢很好,Objective-C和Xcode-6与UserDefaults配合使用效果很好,根据我在使用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;
}
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"data" forKey:@"key"];
[prefs synchronize];
我检索的数据如下:
+(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;
}
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"data" forKey:@"key"];
[prefs synchronize];
当您检索数据时,我还看到一个[Default synchronize],我认为这是不必要的,因为您没有保存数据,祝您好运。我们需要查看您将所有内容存储在用户默认值中的代码。老实说,用户默认值可能不是存储信息的正确位置,比如this@JoelBell:谢谢你的回复,我更新了代码