NSUserDefault在IOS 8模拟器上不工作

NSUserDefault在IOS 8模拟器上不工作,ios,iphone,xcode5,ios8,Ios,Iphone,Xcode5,Ios8,以前我的NSUserDefaults工作正常,但最近升级到ios8后,它在我的模拟器中失败(不确定真实设备,因为我在真实设备上没有ios8)。我已经在iOS7上进行了测试,它在模拟器和真实设备上都能工作。因此,我不确定这是ios8问题还是仅ios8模拟器问题 我的问题是,它总是返回空字符串,即使我保存了它 我的代码如下: +(void)SetStringValueForConfigurationKey: (NSString *) _objectkey withValue:(NSString *)

以前我的
NSUserDefaults
工作正常,但最近升级到
ios8
后,它在我的模拟器中失败(不确定真实设备,因为我在真实设备上没有
ios8
)。我已经在iOS7上进行了测试,它在模拟器和真实设备上都能工作。因此,我不确定这是
ios8
问题还是仅
ios8
模拟器问题

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

我的代码如下:

+(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?或者如何找到问题的原因

谢谢。

您尝试设置

[defaults setValue:_value forKey:_objectkey];
但是你以后再拿

return [defaults stringForKey:_objectkey];
请试一下

[defaults setObject:<#(id)#> forKey:<#(NSString *)#>];
[defaults objectForKey:<#(NSString *)#>];
[默认设置setObject:forKey:];
[默认值objectForKey:];

我已经找到了根本原因,iOS 7和iOS 8的行为有所不同

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

以下代码中存在问题:

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

}
在iOS 7中,此函数仅在首次加载时调用一次。但在iOS 8中,当从“部分卷曲”VC转换回原始登录VC时,会再次调用它。


这就是问题所在。我在这个函数中重置了所有NSUserDefaults值,因此在iOS 8中,每当我存储并传输回登录VC时,所有的值都消失了。因此返回空值。我通过更改此函数中的逻辑来解决问题,以适应iOS 8中的多次调用。

您是否尝试使用valueforkey?谢谢您的建议。。