1

我经常使用 Xcode 的工作区查找和替换。与正则表达式结合使用时,它非常强大。

但是,我有一个包含 30-40 个项目的工作区,并且刚刚需要对构建设置进行大的更改。当我遇到块时,我希望跳入 Xcode,并使用一些正则表达式来更改所有项目的构建设置。我所有的 Xcode 项目文件都被锁定。所以正则表达式查找效果很好,但我无法替换。我什至无法预览它。它只影响我可以看到的项目文件。我打开 Finder 来检查权限,它们是全开的,并且 OSX 文件锁定对所有这些都是关闭的。所以这似乎是一个 Xcode 锁定问题。我尝试像在 Xcode 中使用普通文件(文件 > 解锁...)一样锁定/解锁项目文件,但这些选项对于项目是灰色的。

有人遇到过这种情况吗?在我必须手动更新 30 多个项目的构建设置之前,有什么可能的解决方案吗?

4

1 回答 1

1

我对这个问题进行了更多挖掘,以从上述评论中确认或反驳我的假设。Xcode 确实直接针对查找/替换活动中涉及的文件的磁盘数据工作。文件系统事件表明查找/替换操作打开 .pbxproj 文件并从上到下开始正则表达式活动,通过文件和组对构建配置和设置部分的引用最终将搜索应用于每个指向的磁盘数据.pbxproj 中的条目

自然,根据用户输入的正则表达式,完全有可能在搜索中精确匹配光标当前位置的内容并触发替换操作,从而破坏当前搜索的上下文。这很可能会导致过早终止搜索,但如果搜索没有很好地包含,也可能会触发无限长的查找/替换操作(例如,查找“.”替换为“aa”)。当涉及到这种 Xcode 查找/替换行为时,为了阻止整个类的“自食蛇”问题,Apple 似乎选择在搜索操作期间锁定 .pbxproj。虽然这确实意味着您不能使用 Xcode 的 Find/Replace 正则表达式工具,但还是有很多很棒的文本编辑器(甚至是免费的!) 允许您通过多文件搜索(TextWrangler 和 BBEdit)进行正则表达式查找/替换。这些编辑器允许您将搜索过滤到主项目子文件夹中的文件模式(例如 *.pbxproj)。根据您的项目在磁盘上的组织方式,选择从共同祖先开始的搜索,然后您可以像在 Xcode 中一样逐步完成查找/替换操作。事实上,您在 Xcode 中标识的相同正则表达式字符串可以在这些工具中使用,以影响您需要的更改。选择一个从共同祖先开始的搜索,您可以像在 Xcode 中那样逐步完成查找/替换操作。事实上,您在 Xcode 中标识的相同正则表达式字符串可以在这些工具中使用,以影响您需要的更改。选择一个从共同祖先开始的搜索,您可以像在 Xcode 中那样逐步完成查找/替换操作。事实上,您在 Xcode 中标识的相同正则表达式字符串可以在这些工具中使用,以影响您需要的更改。

与大多数大规模或自主编辑一样,请确保保留要编辑的文件的备份(这对您来说至少是双倍的,因为您的项目完全是本地的、非源代码控制的项目),以防万一您需要回滚您的变化。祝你好运,让我们知道你最终选择了哪条途径以及事情进展如何。

于 2013-07-13T04:06:27.543 回答