NSUserDefaults插入报错attempt to insert non-property list
来源:互联网 发布:伍聚网络招聘 编辑:程序博客网 时间:2024/05/03 09:41
在使用NSUserDefaults的时候插入数据有时候会报以下错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSUserDefaults setObject:forKey:]: attempt to insert non-property list object {array = ({481 = {msg = {1413462307 = "[3197]/U4e8c/U5341/U516b/U56de/U590d/U4e86/U4f60/Uff1a/U4f60/U6211";};"new_msg" = 1;"usr_id" = 2;"usr_name" = "<null>";"usr_tx" = "<null>";};});} for key newMsgArrayDict'这种错误的原因是插入了不识别的数据类型,NSUserDefaults支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型。
自定义的类型需要转成NSData再存入。
===============================================
/// 存储缓存数据
//去除 <null> 对存储的影响
NSMutableDictionary *muUserInfoDict = [NSMutableDictionarydictionary];
for (NSString *keyTempin appDelegate.globalUserInfo.allKeys) {
NSString *stringTemp = [appDelegate.globalUserInfoobjectForKey:keyTemp];
if ([stringTempisEqual:@"<null>"] || [stringTempisEqual:@"null"] || [stringTempisEqual:@"(null)"] ||[stringTemp isKindOfClass:[NSNullclass]]) {
stringTemp =@"";
}
[muUserInfoDictsetObject:stringTemp forKey:keyTemp];
}
[USER_STANDARD_DEFAULTSsetObject:[NSDictionarydictionaryWithDictionary:muUserInfoDict]forKey:USER_INFO_KEY];
[USER_STANDARD_DEFAULTSsetObject:appDelegate.userKeyStringforKey:USER_KEY];
[USER_STANDARD_DEFAULTSsynchronize]; //数据持久化
我原来认为NSUserDefaults存不了数组,又换成了字典,但是还是报错,最后求助网友大神解决了,是我里边的数据结构有"<null>",而NSUserDefaults是不能被成功解析并存入的,所有在存入之前需要将里边的"<null>"改成""即可。
- NSUserDefaults插入报错attempt to insert non-property list
- NSUserDefaults插入报错attempt to insert non-property list object
- iOS---NSUserDefaults插入报错attempt to insert non-property list object
- NSUserDefaults 存数据 Attempt to insert non-property list object
- NSUserDefaults数据保存报错:Attempt to set a non-property-list object...
- iOS NSUserDefaults数据保存报错:Attempt to set a non-property-list object...
- 错误:*** -[NSUserDefaults setObject:forKey:]: attempt to insert non-property list object
- NSUserDefaults:Attempt to insert non-property value Objective C
- Attempt to insert non-property list object - 芒果iOS
- -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<Player: 0x3b0cc90>' of c
- *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value ‘<Student: 0x8399f70>’
- iOS使用NSUserDefaults 存储数据报Attempt to set a non-property-list object as an NSUserDefaults value的错误解决
- Attempt to set a non-property-list object 报错问题
- Attempt to set a non-property-list object as an NSUserDefaults
- [User Defaults] Attempt to set a non-property-list object () as an NSUserDefaults/CFPreferences valu
- Attempt to set a non-property-list object null as an NSUserDefaults
- Attempt to set a non-property-list object
- [User Defaults] Attempt to set a non-property-list object
- 框架 day82 涛涛商城项目-分布式环境下-单点登录SSO的构建(校验/注册/登录)
- Java集合框架概述
- 表单标签
- leetcode-109. Convert Sorted List to Binary Search Tree
- UWP平台支持.Net库的API
- NSUserDefaults插入报错attempt to insert non-property list
- head first设计模式读书记录
- 从txt读入数据,写入数据
- 敏捷开发流程
- 【BZOJ 3450】Tyvj1952 Easy 期望概率dp+吐槽
- SVM算法
- C/C++堆栈讲解【by 徐玉丽】
- MediaPlayer和SurfaceView播放视频
- swift3 语法摘要