NSUserDefaults数据保存报错:Attempt to set a non property list object

NSUserDefaults数据保存报错:Attempt to set a non property list object

大家好,又见面了,我是全栈君。

在使用NSUserDefaults的时候存入数据有时候会报以下错误:

Attempt to set a non-property-list object {
   appkey = 101021;
   authType = 1;
   avatar = "QnYun_pic_1476082244810-1329019310.jpg";
    deviceId = "FC8A1F88-53F6-48F4-B5F6-B18C0B251E8F";
    devices = "53,54,55,56,58,59,60,62,63,64,67,69,74,81,83,98,103,105,111,113,115,116,122,123";
    email = "<null>";
    firstName = vsucvxj;
    lastName = 1233;
    login = GENERAL;
   loginToken = 32766F72FAEB8F5B491B313B9EBE1171D2EB17EFA05D6196BE9D3EA5DDE350FC04A5038C628C8735;
    orgCode = "";
   orgID = A10001394;
    otpDev = "<null>";
   phone = 15010163400;
    serviceToken = "<null>";
    token = 6FC949C9F66E417FCE32C15361DDF1AED2EB17EFA05D6196BE9D3EA5DDE350FC04A5038C628C8735;
   topOrgID = A10001394;
   userCode = "<null>";
    userID = 10004000335;
   userName = purchase01;
} as an NSUserDefaults/CFPreferences value for key userInfoDic
复制代码

原因:dic 是服务器返回的数据 数据里边有””,而NSUserDefaults是不能被成功解析并存入的,所有在存入之前需要将里边的””改成””即可。

##处理从服务返回的NSDictionary值为NSNull或者问题

- (id) processDictionaryIsNSNull:(id)obj{  
    const NSString *blank = @"";  
  
    if ([obj isKindOfClass:[NSDictionary class]]) {  
        NSMutableDictionary *dt = [(NSMutableDictionary*)obj mutableCopy];  
        for(NSString *key in [dt allKeys]) {  
            id object = [dt objectForKey:key];  
            if([object isKindOfClass:[NSNull class]]) {  
                [dt setObject:blank  
                             forKey:key];  
            }  
            else if ([object isKindOfClass:[NSString class]]){  
                NSString *strobj = (NSString*)object;  
                if ([strobj isEqualToString:@"<null>"]) {  
                    [dt setObject:blank  
                           forKey:key];  
                }  
            }  
            else if ([object isKindOfClass:[NSArray class]]){  
                NSArray *da = (NSArray*)object;  
                da = [self processDictionaryIsNSNull:da];  
                [dt setObject:da  
                       forKey:key];  
            }  
            else if ([object isKindOfClass:[NSDictionary class]]){  
                NSDictionary *ddc = (NSDictionary*)object;  
                ddc = [self processDictionaryIsNSNull:object];  
                [dt setObject:ddc forKey:key];  
            }  
        }  
        return [dt copy];  
    }  
    else if ([obj isKindOfClass:[NSArray class]]){  
        NSMutableArray *da = [(NSMutableArray*)obj mutableCopy];  
        for (int i=0; i<[da count]; i++) {  
            NSDictionary *dc = [obj objectAtIndex:i];  
            dc = [self processDictionaryIsNSNull:dc];  
            [da replaceObjectAtIndex:i withObject:dc];  
        }  
        return [da copy];  
    }  
    else{  
        return obj;  
    }  
} 
复制代码

转载于:https://juejin.im/post/5a31006551882527541050aa

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107833.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OSChina 周六乱弹 —— 人家过得是造儿童节,咱呢?[通俗易懂]

    2019独角兽企业重金招聘Python工程师标准>>>…

    2022年4月9日
  • Git指令大全[通俗易懂]

    Git指令大全[通俗易懂]转自:https://mp.weixin.qq.com/s/sF-cx2ss4haO74K55Sjf9g配置首先是配置帐号信息ssh-Tgit@github.com#登陆github修改项目中的个人信息gitconfig–globaluser.name“githelper”gitconfig–globaluser.emailgithelper@gmail.c

    2022年5月7日
  • 使能DHCP Relay_option键的作用

    使能DHCP Relay_option键的作用DHCP一家子(不包括DHCPv6)包括DHCPClient、DHCPServer、DHCPRelay以及DHCPSnooping,之后我会一个个详细学习之后发出来。今天讲述一下DHCPrelay,之前先学习的DHCPSever,还没来得及整理,之后会发出来,今天先说说DHCPRelay。DHCPRelay(DHCP中继),也叫作DHCPAgent,主要用于DHCPClient和DHCPServer不在一个网段时,DHCPClient又有自动地址分配的请…

    2022年10月15日
  • goland 2021.7 激活码【2021最新】

    (goland 2021.7 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月20日
  • matlab画时域和频谱图_信号的频域分析及matlab实现

    matlab画时域和频谱图_信号的频域分析及matlab实现随机振动信号分析方法总结信号处理(信号滤波、时频域分析、神经网络、寿命预测)一、时域分析时域分析特征包括均值、方差、峭度、峰峰值等;振动信号降噪结果分析:对于去噪效果好坏的评价,常用信号的信噪比(SNR)、估计信号同原信号的均方根误差(RMSE)来判断。SNR越高则说明混在信号里的噪声越小,否则相反。RMSE的计算值越小则表示去噪效果越好。信噪比定义:均方根误差定义:二、频域分析三、时频联合域分析(JointTime-FrequencyAnalysis,JTFA)即时频分析,

    2022年10月15日
  • leetcode 接雨水2_code42

    leetcode 接雨水2_code42题目链接给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9 提示:n == height.length0 <= n &lt

    2022年8月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号