解锁Xcode项目文件以进行查找和替换

时间:2013-07-09 14:26:54

标签: xcode xcode4

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

与大多数大规模或自主编辑一样,请确保您保留要编辑的文件的备份(这至少对您来说是双倍的,因为您的项目完全是本地的,非源代码控制的项目),以防您需要回滚您的更改。祝你好运,让我们知道你最近走了哪条大道以及过去的方式。