这可能是一个小问题。或者我可能做错了但无法跟踪它。请帮忙。
我创建了一个应用程序,并在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)
请帮帮我们。在此先感谢,
答案 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);*