如何在XCode中查看文件路径?

如何在XCode中查看文件路径?

我正在尝试调试另一个开发人员的 iPhone 项目。我在 Mac OS X Lion 上使用 XCode 4.2。

现在,当我尝试编译项目时,出现错误,提示缺少某些文件。这些文件在项目导航器中显示为红色。但是,我无法找到这些文件应该所在的原始路径。

例如,假设项目名称为 Project1。开发人员在该项目文件夹之外有一个包含共享库的文件夹,他将这些共享库用于自己的项目。当我在 XCode 中加载该项目时,我可以看到那里有另一个名为 SharedLibs 的文件夹,但其中的所有文件都是红色的(因为我的硬盘中没有该文件夹)。

有没有办法单击红色文件或其他内容来找出它们的原始路径?由于丢失的文件是通用的第三方库,我想在正确的路径中创建文件夹并用丢失的库填充它。

在此先感谢您的帮助。

答案1

您可以右键单击任何元素并选择在 Finder 中显示。它将显示存在的最佳匹配,例如,如果仅文件丢失,则显示直接父文件夹;如果直接父文件夹丢失,则显示其父文件夹,等等。


或者,您可以使用 Xcode 的 AppleScripting 功能来确定项目中项目的完整路径。

打开 AppleScript 编辑器并粘贴以下内容:

set out to ""
tell application "Xcode"
    tell project "Fooo"
        repeat with g1 in groups
            set c1 to name of g1
            repeat with g2 in groups of g1
                set c2 to c1 & " » " & name of g2
                repeat with g3 in groups of g2
                    set c3 to c2 & " » " & name of g3
                    repeat with g4 in groups of g3
                        set c4 to c3 & " » " & name of g4
                        repeat with r4 in file references of g4
                            set out to out & c4 & " » " & name of r4 & "  ——— " & full path of r4 & "
"
                        end repeat
                    end repeat
                    repeat with r3 in file references of g3
                        set out to out & c3 & " » " & name of r3 & "  ——— " & full path of r3 & "
"
                    end repeat
                end repeat
                repeat with r2 in file references of g2
                    set out to out & c2 & " » " & name of r2 & "  ——— " & full path of r2 & "
"
                end repeat
            end repeat
            repeat with r1 in file references of g1
                set out to out & c1 & " » " & name of r1 & "  ——— " & full path of r1 & "
"
            end repeat
        end repeat
        repeat with r0 in file references
            set out to out & " » " & name of r0 & "  ——— " & full path of r0 & "
"
        end repeat
    end tell
end tell
out

更改项目名称("Fooo")并运行它,然后检查输出。它将包含遍历的所有项目的完整路径。但这取决于您的项目结构——它只会遍历前四个级别的组(文件夹)及其文件/文件夹引用。

这是新创建的输出可可应用项目名称Cocoa

Cocoa » Document.xib » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/Document.xib
Cocoa » MainMenu.xib » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/MainMenu.xib
Cocoa » Supporting Files » InfoPlist.strings » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/InfoPlist.strings
Cocoa » Supporting Files » Credits.rtf » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/Credits.rtf
Cocoa » Supporting Files » Cocoa-Info.plist  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Cocoa-Info.plist
Cocoa » Supporting Files » main.m  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/main.m
Cocoa » Supporting Files » Cocoa-Prefix.pch  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Cocoa-Prefix.pch
Cocoa » Document.h  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Document.h
Cocoa » Document.m  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Document.m
CocoaTests » Supporting Files » InfoPlist.strings » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/en.lproj/InfoPlist.strings
CocoaTests » Supporting Files » CocoaTests-Info.plist  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/CocoaTests-Info.plist
CocoaTests » CocoaTests.h  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/CocoaTests.h
CocoaTests » CocoaTests.m  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/CocoaTests.m
Frameworks » Other Frameworks » AppKit.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/AppKit.framework
Frameworks » Other Frameworks » CoreData.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/CoreData.framework
Frameworks » Other Frameworks » Foundation.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework
Frameworks » Cocoa.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Cocoa.framework
Frameworks » SenTestingKit.framework  ——— /Developer/Library/Frameworks/SenTestingKit.framework
Products » Cocoa.app  ——— /Users/danielbeck/Library/Developer/Xcode/DerivedData/Cocoa-crnllmegeptunwfweqdljydsrsnq/Build/Products/Debug/Cocoa.app
Products » CocoaTests.octest  ——— /Users/danielbeck/Library/Developer/Xcode/DerivedData/Cocoa-crnllmegeptunwfweqdljydsrsnq/Build/Products/Debug/CocoaTests.octest

当然,您可以根据项目结构调整脚本,并遍历项目层次结构以找到缺失的项目。在这种情况下,文件的完整路径将显示为 AppleScript 中的输出。

tell application "Xcode"
    tell project "Fooo"
        tell group "Frameworks"
            tell group "Other Frameworks"
                full path of file reference "aaa"
            end tell
        end tell
    end tell
end tell

答案2

在项目导航器中突出显示一个红色文件。在窗口的另一侧,在实用程序面板中,选择文件检查器。顶部有标识和类型。第二个子部分处理文件路径。弹出窗口将为您提供查看路径的各种方式(各种“相对于”选项和绝对路径选项)。右侧有一个小的“窗口”图标,您可以单击它来选择文件(一旦您弄清楚了正确的文件在哪里)。如果文件存在,右箭头图标将带您到该文件(与在 Finder 中显示几乎相同)。

您可能会得到一些线索,了解它在哪里寻找它们,或者最后想到它们的位置。

您可能首先想检查一下此面板上关于红色文件所在组的内容。您可以在此处设置添加到给定组的新文件的默认位置。注意:一旦为某个组设置了路径并且其中有一些文件,最好不要改变该路径设置。如果组中的所有内容都是红色的,那么在组的文件夹上设置正确的路径可以一次性修复所有红色文件。

我不能肯定地说,但我似乎记得这样做会保留您在文件消失之前设置的任何绑定。假设它们与项目认为应该存在的内容相匹配。

答案3

嗯,不行。不过,你可以从对方那里获取文件,然后通过右键单击“SharedLibs”文件夹并选择“将文件添加到 Project1”将其添加到你的项目中。这样就可以了。

相关内容