美文网首页热门程序员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