美文网首页热门程序员iOS学习笔记
NSUserDefault存储数据时崩溃:Attempt to

NSUserDefault存储数据时崩溃:Attempt to

作者: 知忧丶 | 来源:发表于2016-04-27 23:27 被阅读2501次
崩溃详情

这种错误的原因是插入了不识别的数据类型,或数据结构内包含了除NSUserDefault支持的数据类型。NSUserDefaults支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型。
即使你将model再次封装成字典:

[[NSUserDefaults standardUserDefaults] setValue:@{@"user": user} forKey:@"user"];

这样依然会崩溃。

自定义的类型需要转成NSData再存入。

测试代码

相关文章

网友评论

  • b510ad93dd7a:NSMutableArray *dataArr = [NSMutableArray array];
    for (TW_FriendModel *friend in friends) {
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:friend];
    [dataArr addObject:data];
    }
    NSUserDefaults *userdafault = [NSUserDefaults standardUserDefaults];
    [userdafault setObject:[NSArray arrayWithArray:dataArr] forKey:@"friends"];
    [userdafault synchronize];
  • RBNote:我喷到这种问题, 字典放到数组中,在把数组放到NSUserDefaults 中, 之后就奔溃了。后来发现dic中有null ,直接崩溃。
    参考:https://stackoverflow.com/questions/7684611/what-is-nsarrayi-and-nsarraym-how-to-convert-to-nsarray
  • wg689:喔 数组存模型 以前不行,怪不得,存基本数据类型作用不大吧
    知忧丶:自定义数据类型需要归档
  • wg689:你确定userdefault支持数组?查查资料
    知忧丶:@wg689 数组内不可以时自定义数据类型,否则一样会崩。
    知忧丶:@wg689 已经测试支持数组,包括NSArray和NSMutableArray测试代码:http://pan.baidu.com/s/1mhC7Pqg

本文标题:NSUserDefault存储数据时崩溃:Attempt to

本文链接:https://www.haomeiwen.com/subject/odocrttx.html