/ / URLForResource () zwraca zawsze zero, swift 2.3, iOS10 - ios, swift, xcode

URLForResource () zwraca zawsze zero, swift 2.3, iOS10 - ios, swift, xcode

Próbuję coś przetestować i potrzebuję dostępu do pliku, który znajduje się w tym samym katalogu, co klasa testowa (w rzeczywistości w podkatalogu). Próbuję to zrobić w następujący sposób:

let fileURL = testBundle.URLForResource("MasterCalendar", withExtension: "ics", subdirectory: "Calendars")

Próbowałem też tego w ten sposób:

let fileURL = testBundle.URLForResource("MasterCalendar", withExtension: "ics")

Moja klasa nazywa się ParserTest. Plik, do którego próbuję uzyskać dostęp, znajduje się jak pokazano: wprowadź opis obrazu tutaj

Próbowałem uzyskać ścieżkę do pliku:

 if let filePath = NSBundle.mainBundle().pathForResource("MasterCalendar", ofType: "ics", inDirectory: "Calendars") {
print("PATH: ", filePath)
}

Próbowałem usunąć InDirectory i umieściłem również „CallInTests / Calendar”. Nic nie działało. Sam plik jest dodawany do elementu docelowego do testów:

wprowadź opis obrazu tutaj

ORAZ dla projektu: wprowadź opis obrazu tutaj

Niezależnie od tego, co robię, plikURL zwraca zawsze zero.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie jest dla mnie całkiem jasne, jak twoje testBundle jest zdefiniowane, ale to działa dla mnie:

let bundle = Bundle(for: YourClassHere.self)

W twoim przypadku byłoby to:

let bundle = Bundle(for: ParserTest.self)

Którego możesz następnie użyć w następujący sposób:

if let path = bundle.path(forResource: "MasterCalendar", ofType: "ics") {
//magic goes here
}

Wersja Swift 2.3

let bundle = NSBundle(forClass: ParserTest.self)

if let path = bundle.pathForResource("MasterCalendar", ofType: "ics") {
//magic still goes here :)
}

Mam nadzieję, że ci to pomoże.


0 dla odpowiedzi nr 2

spróbuj następującego sposobu:

let testBundle = NSBundle(forClass: self.dynamicType)
let fileURL = testBundle.URLForResource("MasterCalendar", withExtension: "ics")
XCTAssertNotNil(fileURL)