我正在使用XCode,并且拥有一个Objective-C,iOS项目,包含200个源文件,包括2个故事板和10个xib。此项目的类不使用2个字母的前缀。现在,它的类需要添加到另一个也不使用2个字母命名空间的项目中。会有很多命名冲突。
为XCode项目中的每个源文件和类添加2或3个字母前缀的最佳方法是什么?有没有自动化工具可以做到这一点?
答案 0 :(得分:4)
由于没有其他人提交我的问题的答案,这里是我使用UNIX Shell Scripts创建的一个强力解决方案。
第1步:
创建一个" rename_classes.txt"文件,其中每行包含一对一个或多个选项卡分隔的类名。
例如:
MyClassA ZZMyClassA
MyClassB ZZMyClassB
MyClassC ZZMyClassC
第2步:
将以下内容复制并粘贴到shell脚本中,然后从包含XCode项目的目录中执行脚本:
#!/bin/bash
PROJECT_DIR=.
RENAME_CLASSES=rename_classes.txt
#First, we substitute the text in all of the files.
sed_cmd=`sed -e 's@^@s/[[:<:]]@; s@[[:space:]]\{1,\}@[[:>:]]/@; s@$@/g;@' ${RENAME_CLASSES} `
find ${PROJECT_DIR} -type f \
\( -name "*.pbxproj" -or -name "*.h" -or -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.xib" -or -name "*.storyboard" \) \
-exec sed -i.bak "${sed_cmd}" {} +
# Now, we rename the .h/.m files
while read line; do
class_from=`echo $line | sed "s/[[:space:]]\{1,\}.*//"`
class_to=`echo $line | sed "s/.*[[:space:]]\{1,\}//"`
find ${PROJECT_DIR} -type f -regex ".*[[:<:]]${class_from}[[:>:]][^\/]*\.[hm]*" -print | egrep -v '.bak$' | \
while read file_from; do
file_to=`echo $file_from | sed "s/\(.*\)[[:<:]]${class_from}[[:>:]]\([^\/]*\)/\1${class_to}\2/"`
echo mv "${file_from}" "${file_to}"
mv "${file_from}" "${file_to}"
done
done < ${RENAME_CLASSES}
请注意以下事项:
如果在赏金期结束时没有人有更好的答案,我会接受这个答案(我自己的答案)。