美文网首页
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