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
?或者我怎样才能找到问题的原因?
谢谢。
您尝试设置
[defaults setValue:_value forKey:_objectkey];
但是你把后面
return [defaults stringForKey:_objectkey];
请
[defaults setObject:<#(id)#> forKey:<#(NSString *)#>];
[defaults objectForKey:<#(NSString *)#>];
感谢您的建议.. – 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中的多个呼叫。
你试过用valueforkey吗? – Rushabh 2014-10-07 06:52:32