2015-01-05 11 views
7

Praca z narzędziem wiersza poleceń. Próbuję pobrać ścieżkę listy słów zapisanych w pliku o nazwie words.txt. Plik zostanie dodany do projektu, uwzględniony w docelowym członkostwie projektu i wybrany do kopiowania podczas fazy budowania kopii pliku docelowego. Wewnątrz Main.swift ten kod:pathForResource zwraca zero w aplikacji konsoli Mac OS X - Swift

if let path = NSBundle.mainBundle().pathForResource("words", ofType: "txt") { 
    println("Path is \(path)") 
} else { 
    println("Could not find path") 
} 

drukuje "Nie można odnaleźć ścieżki". Czy funkcja klasy mainBundle() jest poprawnym pakietem dostępu? Wszelkie myśli na temat, dlaczego funkcja pathForResource zwraca zero?

Odpowiedz

27

Aby używać pakietów z narzędziami wiersza poleceń, należy upewnić się, że dodaje się pliki zasobów w ramach fazy kompilacji. Wygląda na to, że doceniasz to, ale nie wykonałeś go poprawnie. Poniższe informacje były dla mnie przydatne w szybkiej aplikacji demonstracyjnej:

  1. Dodaj zasoby do swojego projektu.

enter image description here

  1. Wybierz plik projektu w nawigatorze projektu.

enter image description here

  1. Dodaj nową skopiować pliku fazę.

enter image description here

  1. Do fazy dodanego w etapie 3dodać plik z etapie 1. Można to zrobić, klikając przycisk + (w kółku), a następnie przechodząc do odpowiedniego pliku.

enter image description here


Podczas tworzenia projektu, powinien teraz mieć dostęp ścieżkę do pliku przy użyciu NSBundle.

import Foundation 

let bundle = NSBundle.mainBundle() 
let path = bundle.pathForResource("numbers", ofType: "txt") 

if let p = path { 
    let string = NSString(contentsOfFile: p, 
     encoding: NSUTF8StringEncoding, 
     error: nil) 
    println(string) 
} else { 
    println("Could not find path") 
} 

// Output -> Optional(I am the numbers file.) 
+0

Hej, to nadzwyczajne, dziękuję bardzo – ashokdy

3

Narzędzia wiersza poleceń nie używają pakunków, są po prostu surowym plikiem wykonywalnym i nie są kompatybilne z fazą kompilacji plików kopii lub klasą NSBundle.

Będziesz musiał przechowywać plik w innym miejscu (np. ~/Library/Application Support).

Powiązane problemy