Objective-C中遇到的一个比较郁闷的总是for中修改不了字典中的值
从群里问了一下别人说用迭代器修改,用for只能遍历获取值不能修改字典中的值,
这总是比较郁闷,以为没总是的代码一运行就不行
下面把代码放上:
+(NSMutableDictionary*) paramEncrypt:(NSMutableDictionary*) params{标签:NSUTF8StringEncoding,郁闷,NSString,params,key,Objective,字典,data,pm From: https://blog.51cto.com/u_15955464/6040297
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;
}