`
iaiai
  • 浏览: 2141718 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C中遇到的一个比较郁闷的总是for中修改不了字典中的值

 
阅读更多
Objective-C中遇到的一个比较郁闷的总是for中修改不了字典中的值
从群里问了一下别人说用迭代器修改,用for只能遍历获取值不能修改字典中的值,
这总是比较郁闷,以为没总是的代码一运行就不行
下面把代码放上:
+(NSMutableDictionary*) paramEncrypt:(NSMutableDictionary*) params{
    if (!params) return params;
    
    //这种用for的方式不能个性字典中的值
//    NSMutableDictionary* newParams = [NSMutableDictionary dictionaryWithCapacity:0];
//    
//    for (NSString* key in [params keyEnumerator]) {
//        NSData *data = [[params objectForKey:key] dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
//        NSString* pm = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding];
//        [LogUtil d:@"%@",pm];
////        [params setObject:pm forKey:key]; //不能用这种方式会报错,好像是在for中被锁了
//        [newParams setObject:pm forKey:key];//这种方式也不好还得新建一个浪费内存
//    }
    
    //只能用此迭代器的方式个性里面的值
    [params enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id key, id obj, BOOL *stop) {
        NSData *data = [[params objectForKey:key] dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
        NSString* pm = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding];
        [params setObject:pm forKey:key];
    }];
    return params;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics