【问题标题】:Unlock Xcode Project File for Find and Replace解锁 Xcode 项目文件以进行查找和替换
【发布时间】:2013-07-07 05:08:37
【问题描述】:

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

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

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

【问题讨论】:

  • 您不是偶然将 Perforce 用作您的 SCM 吗?默认情况下,P4 客户端规范设置为将文件保留为只读,直到您将其签出以进行编辑。如果是这样,您可以在客户端规范中设置“allwrite”选项。
  • 它实际上都是本地的。这些项目没有 SCM。
  • 无赖;那么您可能会遇到文件系统权限。打开终端,导航到您的 .xcodeproj 文件并运行 ls -la Check 以确保内容归您所有。
  • 运行了一些终端检查。和 Finder 检查。它们是敞开的。
  • 遗憾的是,我遇到此问题的唯一一次是由于文件系统权限。我最终暂时更改了权限,通过 bash 脚本进行更改并恢复了权限。

标签: xcode xcode4


【解决方案1】:

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

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

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

【讨论】:

  • 我安装了 TextWrangler,所以我在您发表评论后试了一下。我不经常使用它,所以我不会弄清楚它。多文件查找/替换似乎不想使用 pbx 文件并反复崩溃。所以我最终还是手工完成了,因为我在截止日期前需要它。
  • 感谢您所做的大量研究,这一切都很有意义。下次我需要这样做时,我会花额外的精力来找出 TextWranger 或使用另一个编辑器,然后这样做。我没想到他们能够浏览专有的 .xcodeproj 来找到所需的文件,但如果他们不崩溃,显然他们可以哈哈。
猜你喜欢
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2020-04-03
  • 2016-05-17
相关资源
最近更新 更多