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?谢谢您的建议。。