-1

当我通过 Facebook 登录时,我在日志中收到如下消息

*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<null>' of class 'NSNull'.  Note that dictionaries and arrays in property lists must also contain only property values.

它的意义是什么?为什么会出现这条消息?

在 facebook.m 类中,我设置为

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNull null] forKey:@"FBAccessTokenKey"];
[defaults setObject:[NSNull null] forKey:@"FBExpirationDateKey"];
4

2 回答 2

5

[NSNull null]不能与 NSUserDefaults 一起使用。

你可以使用removeObjectForKey:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];

或者如果你坚持设置一些东西,你可以设置一个空字符串@""

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"" forKey:@"FBAccessTokenKey"];
[defaults setObject:@"" forKey:@"FBExpirationDateKey"];
于 2012-10-05T11:56:16.237 回答
1

由于 NSUserDefaults 将其数据序列化为属性列表(/var/mobile/Library/Preferences/[BUNDLE_ID].plist),所有设置的属性都应该是属性列表对象,即 NSArray、NSDictionary、NSString、NSNumber、NSData 或 NSDate。如果要删除键的值,请使用- removeObjectForKey:NSUserDefaults 上的消息。

于 2012-10-05T12:00:40.867 回答