每当我向项目添加新文件时,都会添加默认位置“相对于组”和有问题的路径(例如):
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
这不像是我将文件放在另一个用户的目录中。在这种情况下,../myUsername
解析为.
。与所有其他双点相同。您可以将其简化如下:
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
../../../../Folder/Foo/Foo/Foo/Bar.swift
../../../Foo/Foo/Foo/Bar.swift
../../Foo/Foo/Bar.swift
../Foo/Bar.swift
Bar.swift
因为它实际上是沿着这条路走,然后以同样的方式返回。相当于cd ../; cd ~-
在shell中运行。
我希望路径很简单Bar.swift
。这在使用共享代码时会导致很多问题,因为其他人在不同的地方使用不同的用户名拥有该项目。
到目前为止,我发现的唯一解决方案是手动编辑project.pbxproj
文件。是什么导致了这个问题,我应该怎么做才能解决它?
笔记:我怀疑这可能与用户名的情况有关,因为用户名与路径一样远。
编辑:这是一个截图(红色是我的用户名,绿色是应用程序名称):
此外,cd
进入目录并运行realpath ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
返回Bar.swift
。
编辑 2:我对用户名区分大小写的怀疑是正确的!看看当我将位置设置为时会发生什么Absolute Path
:
以前,用户名只有标题大小写(../MyUsername
,/Users/MyUsername
等)。然而,现在 Xcode 似乎走了:
- 从小写用户名向下(到组文件夹)的目录树...
- 过去包含项目的目录...
- 进入包含文件的目录...
- 备份到用户目录...
- 使用 Title case 用户名使用相同的路径。
我认为这是 Xcode 中的一个错误。如果我不得不猜测,内部发生的事情是:
- Xcode 获取文件的绝对路径
- 添加时从文件选择器
- 通过按位置部分中的文件夹图标从文件选择器中重新定位
- 不知何故从创建一个新文件(?)
- 此路径使用 Title case 用户名。
- Xcode 获取绝对组路径
- 从它的记录(project.pbxproj?)
- 由于某种原因,此路径使用小写用户名
- Xcode 试图找出 #1 相对于 #2 的路径。
- 例如,如果文件的路径是
/foo/bar/baz.swift
,组是/foo
,则预期结果是bar/baz.swift
。 - Xcode 从组的绝对路径开始(因为结束路径应该是相对于组的)。
- Xcode 查看两条路径并比较它们。
/Users/myusername/Folder/Foo/Foo/Foo
与/Users/MyUsername/Folder/Foo/Foo/Foo/Bar.swift
。 - Xcode 发现唯一的区别是:
- 在路径的末尾(一个有文件名,另一个没有)
- 在用户名中(myusername vs MyUsername)
- Xcode 使用双点 ( ) 向上移动到文件树上最远的问题
../
。/Users/myusername/Folder/Foo/Foo/Foo/../../../../..
,或者干脆/Users
。 - Xcode 再次启动,但这次使用文件的绝对路径的剩余部分(Xcode 永远不会返回,
/Users
因为它对于两个路径都是相同的)。 - 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
.
熟悉的?
无论如何,我该如何解决这个问题??????