NSUserDefaults突然停止保存数据

时间:2016-08-20 09:41:32

标签: ios objective-c nsuserdefaults

这可能是一个小问题。或者我可能做错了但无法跟踪它。请帮忙。

我创建了一个应用程序,并在NSUserDefaults中存储了userToken和少量标志。该应用程序工作正常,直到昨天。但是今天当我打开应用程序进行进一步开发时,NSUserDefaults中存储的所有内容都突然出现null。我什么都没改变。并再次安装应用程序以重新保存数据。但没什么。我很遗憾为什么会这样。

我在iOS 9.3.4上使用Xcode版本7.3.1(7D1014)

这是我的代码

ViewCongtroller1.m中的

 NSUserDefaults *def = [NSUserDefaults  standardUserDefaults];
[def setValue:@"user1" forKey:@"Usertoken"];
[def synchronize];

并在ViewController2.h中:

NSUserDefaults *def ;
ViewController2.m中的

def = [NSUserDefaults standardUserDefaults];
NSLog(@"Token = %@",[def valueForKey:@"Usertoken"]);

这是响应

Token = (null)

请帮帮我们。在此先感谢,

5 个答案:

答案 0 :(得分:1)

我把它整理出来了。 NSUserDefaults没有任何问题。问题是,在分配值NSUserDefaults后,我正在清除应用中某处的NSUserDefaults。感谢支持无论如何朋友:)

答案 1 :(得分:0)

我认为你的代码没有任何错误。但仍然只是将setValue更改为setObject,然后检查。

[def setValue:[json valueForKey:@"token"] forKey:@"Usertoken"]; 

[def setObject:[json valueForKey:@"token"] forKey:@"Usertoken"];

并检查NSLog(@"%@",[json valueForKey:@"token"]);值是否可用。

答案 2 :(得分:0)

请检查你的json是否包含密钥@" token"如果是,那么检查是否有任何数据或null

答案 3 :(得分:0)

如果[json valueForKey:@"token"]的值是object(任何类型的对象,如字符串或其他),那么你应该使用,

 [def setObject:[json valueForKey:@"token"] forKey:@"Usertoken"];

而不是

 [def setValue:[json valueForKey:@"token"] forKey:@"Usertoken"];

您可以检索数据,

 NSLog(@"Token = %@",[def objectForKey:@"Usertoken"]);

答案 4 :(得分:0)

*I used the following code to print out the location of my NSUserDefaults file.Some time we cleanup the docDirectory data in app,so its remove NSUserDefault File and we got a nil value ,

试试这个以进行调试..

NSArray *path = NSSearchPathForDirectoriesInDomains(
   NSLibraryDirectory, NSUserDomainMask, YES);
NSString *folder = [path objectAtIndex:0];
NSLog(@"Your NSUserDefaults are stored in this folder: %@/Preferences", folder);*