pathForResource gibt nil in der Mac OS X-Konsolenanwendung - Swift zurück

7

Ich arbeite an einem Befehlszeilentool und versuche, den Pfad einer Liste von Wörtern abzurufen, die in einer Datei namens words.txt gespeichert sind. Die Datei wird dem Projekt hinzugefügt, in der Zielmitgliedschaft des Projekts enthalten und zum Kopieren während der Erstellungsphase der Kopie des Ziels ausgewählt. Innerhalb von Main.swift diesen Code:

%Vor%

druckt "Pfad konnte nicht gefunden werden". Ist die MainBundle () - Klassenfunktion das richtige Bundle für den Zugriff? Irgendwelche Gedanken darüber, warum die Funktion pathForResource null zurückgibt?

    
MIGreenberg 05.01.2015, 00:20
quelle

2 Antworten

27

Um Bundles mit Befehlszeilenwerkzeugen zu verwenden, müssen Sie sicherstellen, dass Sie die Ressourcendateien als Teil der Erstellungsphase hinzufügen. Es klingt, als würdest du das schätzen, aber es nicht richtig ausgeführt haben. Folgendes funktionierte für mich in einer schnellen Demo-App:

  1. Fügen Sie die Ressource Ihrem Projekt hinzu.

  1. Wählen Sie die Projektdatei im Projektnavigator.

  1. Fügen Sie eine neue kopiere Dateiphase hinzu.

  1. Fügen Sie der Phase, die Sie in Schritt 3 hinzugefügt haben, die Datei aus Schritt 1 hinzu. Dazu klicken Sie auf die Schaltfläche + (eingekreist) und navigieren dann zu der betreffenden Datei.

Wenn Sie das Projekt erstellen, sollten Sie jetzt mit NSBundle auf den Pfad der Datei zugreifen können.

%Vor%     
Paul Patterson 05.01.2015, 11:35
quelle
3

Die Befehlszeilentools verwenden keine Bundles, sie sind nur eine rohe ausführbare Datei und sind nicht kompatibel mit der Erstellungsphase der Kopierdateien oder der Klasse NSBundle .

Sie müssen die Datei irgendwo anders speichern (zB ~/Library/Application Support ).

    
Abhi Beckert 05.01.2015 00:31
quelle

Tags und Links