NSUserDefaults不工作在IOS 8模拟器

问题描述:

以前我的NSUserDefaults工作得很好,但升级到iOS 8后,它在我的模拟器(不知道真实的设备,因为我没有在真实设备iOS 8)失败。我已在iOS7上进行测试,它正在模拟器和真实设备上工作。所以我不知道是iOS 8问题还是只有iOS 8模拟器的问题。NSUserDefaults不工作在IOS 8模拟器

我的问题是,即使在我保存后,它总是返回空字符串。

我的代码如下:

+(void)SetStringValueForConfigurationKey: (NSString *) _objectkey withValue:(NSString *)_value 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults synchronize]; //let's make sure the object is synchronized 
    [defaults setValue:_value forKey:_objectkey]; 
    [defaults synchronize];//make sure you're synchronized again 
} 

+(NSString *)GetStringValueForConfigurationKey: (NSString *)_objectkey 
{ 
    //create an instance of NSUserDefaults 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults synchronize]; //let's make sure the object is synchronized 
    if ([defaults stringForKey:_objectkey] == nil) 
    { 
     //I don't want a (null) returned 
     return @""; 
    } 
    else 
    { 

     return [defaults stringForKey:_objectkey]; 
    } 
} 

有什么办法,我可以在模拟器升级到iOS 8.0.2?或者我怎样才能找到问题的原因?

谢谢。

+1

你试过用valueforkey吗? – Rushabh 2014-10-07 06:52:32

您尝试设置

[defaults setValue:_value forKey:_objectkey]; 

但是你把后面

return [defaults stringForKey:_objectkey]; 

[defaults setObject:<#(id)#> forKey:<#(NSString *)#>]; 
[defaults objectForKey:<#(NSString *)#>]; 
+0

感谢您的建议.. – teapeng 2014-10-07 08:06:01

我发现根源尝试,有iOS的7间不同的行为和iOS 8.

更详细地说,我在登录屏幕上遇到了这个问题。在登录屏幕本身,我有一个选择,需要用户选择我通过“部分卷曲”转换放入另一个视图控制器。问题发生在这个转变。

问题是低于该代码内:

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 

} 

在iOS系统7,该功能只第一负载期间调用一次。但是在iOS 8中,当从“Partial Curl”VC返回到原始登录VC时,它将被再次调用。

这是问题出现的地方。我重置了这个函数中的所有NSUserDefaults值,因此在iOS 8中,只要我存储并转回到登录VC,所有的值都消失了。因此返回空值。我通过改变我的逻辑在这个功能来解决我的问题,以迎合iOS 8中的多个呼叫。