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

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");
}
}
}
}
}
网友评论