Xcode 9之前创建的项目组与文件夹结构不匹配的调整方法咨询
我之前也碰到过Xcode 9之前老项目这种组和文件夹完全不匹配的糟心事,折腾了好一阵才理顺,给你分享下可行的解决办法:
一、有没有自动化方法?
遗憾的是,Xcode没有原生的一键同步组与文件夹结构的功能。不过社区里有一些开发者写的脚本(比如基于Ruby/Python的),可以遍历Xcode项目的组结构,自动在Finder中创建对应文件夹并移动文件。但这类脚本有一定风险,很可能因为项目特殊结构出问题,所以如果要用,一定要先做好项目备份,并且在测试环境验证后再操作。
二、手动操作详细流程
手动操作虽然繁琐,但胜在稳妥,步骤如下:
重中之重:先备份整个项目
复制一份项目到其他位置,避免操作失误导致文件丢失或项目损坏。关闭Xcode,在Finder中整理文件夹结构
完全按照Xcode里的组层级,在Finder中创建对应的文件夹,把组内的文件逐一移动到对应的文件夹中。比如Xcode里有Network/Requests组,就创建Network/Requests文件夹,把组里的请求类文件移进去。重新打开Xcode,清理无效引用
此时Xcode里会出现大量红色的文件(路径找不到),选中这些文件,右键选择Delete,然后在弹窗中选Remove Reference(千万不要选Move to Trash,不然文件就真删了)。重新关联文件与组
从Finder中把整理好的文件夹拖进Xcode对应的组里,拖入时注意勾选:Copy items if needed:如果文件已经在项目目录内,这个选项不会重复复制,只是建立关联;Create groups:不要选Create folder references,这样才能保持组结构和文件夹结构一一对应。
关联未绑定文件夹的组
对于那些本身没关联文件夹的组,选中组后打开右侧的File Inspector,在Location下拉选Relative to Project,然后点击旁边的文件夹图标,选择Finder中对应的文件夹,完成绑定。
三、解决关联后仍出现感叹号的问题
如果操作后文件旁还是有感叹号,一般是路径残留或关联错误,试试这些办法:
- 检查文件路径:选中带感叹号的文件,打开
File Inspector,查看Location里的路径是否正确,若不对,点击文件夹图标重新选择正确的文件位置。 - 重新添加引用:删除该文件的引用(选Remove Reference),然后从Finder中重新拖入对应的组。
- 清理pbxproj残留:关闭Xcode,找到
.xcodeproj文件,右键选Show Package Contents,打开project.pbxproj文件,搜索带感叹号的文件名,删除所有相关的旧条目,保存后重新打开Xcode再添加文件。
内容的提问来源于stack exchange,提问作者Kqtr

