美文网首页
iOS马甲--修改Assets内图片配置文件Contents.j

iOS马甲--修改Assets内图片配置文件Contents.j

作者: Pantheraleo | 来源:发表于2021-01-21 17:32 被阅读0次

    写马甲避免不了修改图片资源的名称,图片本身批量替换前缀名后,因为Contents.json里面还是旧的图片名字,所以Xcode就找不到匹配的图片。图片少的话,可以手动再拖一遍,但当图片几十上百时,每次都这么做就太费时间了。以下代码可以批量修改Contents.json内的配置图片名。只针对有固定前缀的。

    1:调用

    2:实现

    2:实现

    //修改Assets文件里面的Contents.json文件配置

    - (void)editJsonContent:(NSArray *)array lastPath:(NSString *)lastPath {

        NSString *prefixStr = @"Aiolia_Leo_";//要替换的前缀

        NSString *newPrefix = @"Steam_This_";//新前缀

        NSFileManager *filemanager =[NSFileManager defaultManager];

      //    遍历获取所有文件名

          for (NSString *str in array) {

              if ([str containsString:@".DS_Store"]||[str containsString:@".png"]) {

                  NSLog(@"不是目标文件");

              }else {

                  if (![str containsString:@"Contents.json"]) {

                      //    2. 获得所有文件夹路径

                      NSString *filePath = [NSString stringWithFormat:@"%@/%@",lastPath,str];

                      //    获取文件夹内子文件

                          NSArray *subArray =[filemanager contentsOfDirectoryAtPath:filePath error:nil];

                      [self editJsonContent:subArray lastPath:filePath];

                  }else {

                      NSString *finalPath = [NSString stringWithFormat:@"/%@/%@",[lastPath stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]],str];

                      //在读取的时候首先去文件中读取为NSData类对象,然后通过NSJSONSerialization类将其转化为foundation对象

                      NSData *jsonData = [[NSFileManager defaultManager] contentsAtPath:finalPath];

                      NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:jsonData options:1 error:nil];

                    NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithDictionary:jsonDic];

                    NSArray *subArr = mDic[@"images"];

                      NSMutableArray *finalSubArr = [NSMutableArray arrayWithArray:subArr];

                      if (subArr.count>0) {

                          for (NSInteger index=0; index<subArr.count; index++) {

                              NSMutableDictionary *subDic = [NSMutableDictionary dictionaryWithDictionary:finalSubArr[index]];

                              NSString *value = subDic[@"filename"];

                              NSString *finalName = @"";

                              if ([value containsString:prefixStr]) {

                                  finalName = [value stringByReplacingOccurrencesOfString:prefixStr withString:newPrefix];

                                  subDic[@"filename"] = finalName;

                                  finalSubArr[index] = subDic;

                              }

                          }

                          mDic[@"images"] = finalSubArr;

    //                      NSLog(@">>>>dic:%@",mDic);

                          NSData *finalData = [NSJSONSerialization dataWithJSONObject:mDic options:1 error:nil];

                          [finalData writeToFile:finalPath atomically:YES];

                      }else {

                          NSLog(@"不是目标json");

                      }

              }

              }

            }

    }

    相关文章

      网友评论

          本文标题:iOS马甲--修改Assets内图片配置文件Contents.j

          本文链接:https://www.haomeiwen.com/subject/pqsdzktx.html