Xcode 位置无法正常工作

Xcode Locations Don't Work Properly

每当我向项目中添加新文件时,都会添加默认位置 "Relative to Group" 和有问题的路径(例如):

../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift

我又不是把文件放到别的用户的目录下了。在这种情况下,../myUsername 解析为 .。与其他所有双点相同。您可以将其简化如下:

  1. ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
  2. ../../../../Folder/Foo/Foo/Foo/Bar.swift
  3. ../../../Foo/Foo/Foo/Bar.swift
  4. ../../Foo/Foo/Bar.swift
  5. ../Foo/Bar.swift
  6. Bar.swift

因为它实际上是沿着这条路往下走,然后原路返回。相当于运行 cd ../; cd ~-中的shell.

我希望路径简单 Bar.swift。这在使用共享代码时会导致很多问题,因为其他人在不同的地方使用不同的用户名拥有该项目。

到目前为止我找到的唯一解决方案是手动编辑 project.pbxproj 文件。是什么导致了这个问题,我应该如何解决它?

注意:我怀疑这可能与用户名的大小写有关,因为用户名与路径一样远。

编辑:这是截图(红色是我的用户名,绿色是应用名称):

此外,cding 到目录和 运行 realpath ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift returns Bar.swift.

编辑 2:我对用户名 case-sensitive 的怀疑是正确的!看看当我将 Location 设置为 Absolute Path:

时会发生什么

以前,用户名只是标题大小写(../MyUsername/Users/MyUsername 等)。然而,现在Xcode似乎去:

  1. 从小写用户名向下目录树(到组文件夹)...
    1. 通过包含项目的目录...
    2. 进入包含文件的目录...
  2. 备份到用户目录...
  3. 与 Title case 用户名相同的路径。

我认为这是 Xcode 中的错误。如果我不得不猜测,内部发生的事情是:

  1. Xcode获取文件的绝对路径
    • 添加时从文件选取器
    • 通过按“位置”部分中的文件夹图标重新定位时从文件选择器中
    • 以某种方式创建新文件(?)
  2. 此路径使用 Title case 用户名。
  3. Xcode获取绝对组路径
    • 来自它的记录 (project.pbxproj?)
  4. 出于某种原因,此路径使用小写用户名
  5. Xcode 试图找出从#1 开始的路径相对于从#2 开始的路径。
    1. 例如,如果文件路径为 /foo/bar/baz.swift,组为 /foo,则预期结果为 bar/baz.swift
    2. Xcode 从组的绝对路径开始(因为结束路径应该是相对于组的)。
    3. Xcode 查看两条路径并进行比较。 /Users/myusername/Folder/Foo/Foo/Foo 对比 /Users/MyUsername/Folder/Foo/Foo/Foo/Bar.swift.
    4. Xcode 看到唯一的区别是:
      • 在路径的末尾(一个有文件名,一个没有)
      • 在用户名中(myusername vs MyUsername)
    5. Xcode 使用双点 (../) 向上移动到文件树中最远的问题。 /Users/myusername/Folder/Foo/Foo/Foo/../../../../..,或简单地 /Users.
    6. Xcode 再次开始,但这次使用文件绝对路径的剩余部分(Xcode 永远不会回到 /Users 因为它与两条路径)。
    7. Xcode 一直到文件名,使用 Title case 用户名。 /Users/myusername/Folder/Foo/Foo/Foo/../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift.

当 location 设置为 Relative to Group 时,组的路径是隐含的,因此之前的路径简单地变为:

../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift.

熟悉吗?


无论如何,我该如何解决这个问题?????

事实证明,问题是我将 home directory path 设置为与实际文件夹不同的大小写。