NSUserDefaults 在 iOS 7 中无法正常工作
Posted
技术标签:
【中文标题】NSUserDefaults 在 iOS 7 中无法正常工作【英文标题】:NSUserDafults not working properly in iOS7 【发布时间】:2014-11-11 22:15:00 【问题描述】:+(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 的错误吗? 如何摆脱这个问题
提前谢谢
【问题讨论】:
我们需要查看将所有内容存储在用户默认值中的代码。不过老实说,用户默认设置可能不是存储此类信息的正确位置 @JoelBell:感谢您的回复,我更新了代码 【参考方案1】: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"];
当您检索数据时,我还看到 [默认同步],我认为这不是必需的,因为您没有保存数据,祝您好运。
【讨论】:
以上是关于NSUserDefaults 在 iOS 7 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
无法保存到 iOS 7.0.2 上的 NSUserDefaults
如何使用 NSUserDefaults 存储和加载 BOOL 数组或 int 数组? (IOS 7)