2017-02-26 3 views
0

Ich kann keinen Reim oder Grund herausfinden, wie pathForResource funktioniert ... oder besser geeignet, nicht.'NSBundle mainBundle' pathForResource seltsames Verhalten

Ich habe eine Reihe von Nibs in meiner App, sie sind alle richtig in/Build-Phasen/Copy Bundle Resources.

Sie sind auch ordnungsgemäß in Target Membership auf der File Inspector Registerkarte markiert.

Ich zeige hier nur der Kürze halber 2 Fälle. Wenn ich zu dem Teil meines Codes komme, in dem ich pathForResource verwende, bekomme ich willkürliche und inkonsistente Ergebnisse. Auch wenn alle meine nibs ____ benannt sind. Xib, in einigen Fällen die einzige Möglichkeit, ein Ergebnis zurück von pathForResource erhalten ist, wenn ich für xml und andere Zeiten, frage ich für nib

Wer fragen haben eine Idee haben, warum Dieses Verhalten ist inkonsistent?

enter image description here

Antwort

2

Diese Ergebnisse scheinen nicht besonders überraschend, oder widersprüchlich zu mir.

.xib-Dateien sind Quelldateien für NIBs. Sie sollten nicht direkt in eine App kopiert werden. Sie werden zum Zeitpunkt der Erstellung in .nib-Dateien kompiliert und es sind diese .nib-Dateien, die in die App kopiert werden. Sie sollten nicht erwarten, dass pathForResource:... ofType:@"xib" jemals eine .xib-Datei in Ihrer App findet. Wenn dies der Fall ist, haben Sie das Gebäude der App irgendwie vermasselt. Die XIB-Datei ist zur Laufzeit nicht nützlich.

Vermutlich nichts damit zu tun haben Sie eine Datei TabSale.xml, die in der Erstellungsphase Build-Ressourcen erstellen ist. Diese Datei wird nur direkt kopiert. Wenn Sie nicht vorhaben, eine XML-Rohdatei zu kopieren - wenn es sich beispielsweise um eine Quelldatei handelt, die bei der Erstellung in eine andere Datei konvertiert werden soll - müssen Sie herausfinden, warum sie kopiert wird. Wenn es aus irgendeinem Grund nur eine gefälschte Kopie von TabSale.xib ist, sollten Sie es einfach loswerden.

+0

Ok, das wusste ich nicht über die .xib, und das sind gute Informationen, aber was mich mehr beschäftigt und nicht deutlich genug buchstabiert, ist, warum kann ich einige XIBs verlangen? durch Angabe von 'xml' mit' pathForResource' und anderen xibs kann ich nicht. Andere xibs muss ich 'nib' angeben, um ihren Pfad zurückzubekommen. Es gibt keinen ersichtlichen Grund für dieses Verhalten, das ich entdecken kann. –

+0

Wenn Sie "xml" angeben, erhalten Sie ** nicht ** die NIB. Sie erhalten eine andere Datei mit einem ähnlichen, aber nicht identischen Namen. Dein Screenshot zeigt dies. Die Erweiterung ist, nicht überraschend, .xml. Die unerklärliche Sache ist, warum es eine solche .xml-Datei in Ihrer App gibt. Wie ich im letzten Abschnitt meiner Antwort erwähnt habe, ist das ein Problem mit dem Projekt/Ziel. Höchstwahrscheinlich haben Sie versehentlich XML-Dateien zum Projekt und zur Build-Phase von Build-Ressourcen Ihres Ziels hinzugefügt und sie werden pflichtbewusst kopiert. Was ursprünglich diese .xml-Dateien erstellt hat, kann ich nicht erraten. –