码迷,mamicode.com
首页 > 其他好文 > 详细

使用NSUserDefaults进行数据缓存时遇到的问题

时间:2015-08-28 12:47:49      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

从服务器获取到字典类型数据,用NSUserDefaults缓存到本地

 

初始的- (void)dataLoad {

     NSMutableDictionary * aaa = [originalData valueForKey:@"userInfo"];

        [userDefaults setValue:aaa forKey:@"data"];

        [userDefaults synchronize];

 }

 

由于数据中有CFNULL 调用下面方法,进行替换

- (void)cleanDictionary:(NSMutableDictionary *)dictionary {

    [dictionary enumerateKeysAndObjectsUsingBlock:^( id key, id obj, BOOL *stop){

        if(obj == [NSNull null]) {

            [dictionary setObject:@"" forKey:key];

        } else if ([obj isKindOfClass:[NSDictionary class]]) {

            [self cleanDictionary:obj];

        }

        NSLog(@"key:%@,,value:%@",key,obj);

    }];

}//属性列表中不能存有CFNULL,遍历进行替换

然而接收的数据无法进行数据的修改,我们就需要MutableCopy来解决

修改的- (void)dataLoad {

        NSMutableDictionary * aaa = [[originalData valueForKey:@"userInfo"] mutableCopy];

    [self cleanDictionary:aaa];

        [userDefaults setValue:aaa forKey:@"data"];

        [userDefaults synchronize];

 }

这样就好了       

目前还是个新手,对于mutableCopy和copy还不是很了解

使用NSUserDefaults进行数据缓存时遇到的问题

标签:

原文地址:http://www.cnblogs.com/kakasang/p/4766011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!