1

每当我向项目添加新文件时,都会添加默认位置“相对于组”和有问题的路径(例如):

../../../../../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文件。是什么导致了这个问题,我应该怎么做才能解决它?

笔记:我怀疑这可能与用户名的情况有关,因为用户名与路径一样远。

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

屏幕截图显示了上面解释的路径和真实路径(完全一样,除了它是 <code>/Users/MyUsername/</code>...

此外,cd进入目录并运行realpath ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift返回Bar.swift

编辑 2:我对用户名区分大小写的怀疑是正确的!看看当我将位置设置为时会发生什么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.

当位置设置为Relative to Group,组的路径是隐含的,所以之前的路径简单地变成:

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

熟悉的?


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

4

1 回答 1

0

事实证明,问题在于我将主目录路径设置为与实际文件夹不同的大小写。

于 2019-08-12T02:34:30.650 回答