从群里问了一下别人说用迭代器修改,用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; }