【问题标题】:Why can't I access files that are in a folder (as opposed to a group)?为什么我不能访问文件夹(而不是组)中的文件?
【发布时间】:2019-05-20 22:41:53
【问题描述】:

我正在尝试对项目使用文件夹而不是组。目标是避免在项目文件中创建组,因为这些往往会导致 git 中的合并冲突。

基本上我想要一个 Xcode 项目,它尊重项目目录中的文件结构(就像在 Android 项目中一样),而不是使用参考系统。

当我将文件夹拖到项目中时,我:

  1. 禁用“根据需要复制项目”
  2. 添加的文件夹:创建文件夹引用
  3. 添加到目标:MyTarget

这将创建一个文件夹层次结构(在项目中;蓝色文件夹图标),正如我所期望的那样。我可以在 Finder 中添加/删除/重命名文件并在 Xcode 中查看它们的更新。

此外,该文件夹还显示了正确的目标成员资格。 (我已经读过文件夹,文件从顶级文件夹获取其目标成员信息。即您不需要为每个文件设置目标。)

不幸的是,当我尝试访问其中一个文件时,比如说EventBus.swift,我收到错误Use of unresolved identifier 'EventBus'

这似乎是一个目标问题,但我不确定为什么目标会成为问题。或者 - 也许是因为 Xcode 没有管理对 EventBus.swift 文件的引用......也许项目根本不知道该文件存在?

如果后者是真的 - 我很好奇是否有任何方法可以绕过 Xcode 容易发生冲突的参考系统。

【问题讨论】:

标签: ios xcode


【解决方案1】:

恐怕你是误会的受害者。文件夹引用用于包含在构建应用程序的应用程序包中的文件,例如图像或声音文件。它们适用于要复制到已构建应用程序中但在已构建应用程序内的文件夹中的文件。

您不能将文件夹引用用于作为应用程序代码一部分的 Swift 文件;此类文件需要编译以形成构建的应用程序。

事实上,您并不负责项目文件夹中的文件夹结构。在现代版本的 Xcode 中,您可以获得的最接近的方法是使用我所说的文件夹链接组。这与文件夹引用不同;它是一个组,而不是文件夹引用,但它是一个对应于项目文件夹中磁盘上的实际文件夹的组。正如我在其他地方解释的那样:

当您创建一个新组时,可以选择菜单项;例如,在上下文菜单中,您可能会看到 New Group 和 New Group With Folder。 (令人困惑的是,有时会选择 New Group 和 New Group Without Folder。)创建一个简单明了的组;另一个创建一个文件夹链接组。

您可以在项目导航器中发现一个文件夹链接组,因为它的左下角没有一个三角形,而且它在文件检查器中有一个实际的文件夹名称:

已经创建了一个文件夹链接组(在项目导航器中),如果您随后在该组内创建一个代码文件(在项目导航器中),它将位于磁盘上的该文件夹内。

【讨论】:

  • 感谢您的解释。关于从文件夹复制文件的说明非常有帮助。 Xcode 不支持这样的功能真是令人遗憾——但事实就是如此。 (也非常感谢分享类似问题的链接。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 2014-06-18
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多