/ / URLForResource () връща винаги нула, swift 2.3, iOS10 - ios, swift, xcode

URLForResource () винаги връща нула, бърз 2.3, iOS10 - ios, бърз, xcode

Опитвам се да тествам нещо и имам нужда от достъп до файла, който е в същата директория като тестовата класа (всъщност в поддиректория). Опитвам се да го направя по следния начин:

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

Аз също го опитах така:

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

Моят клас се нарича ParserTest. Файлът, до който се опитвам да вляза, се намира както е показано: въведете описанието на изображението тук

Опитах се да получа пътя на файла:

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

Опитах се да премахна inDirectory и да поставя също "CallInTests / Calendar". Нищо не работи. Самият файл се добавя в Целта за тестове:

въведете описанието на изображението тук

И за проекта: въведете описанието на изображението тук

Независимо от това, което правя, fileURL винаги се връща на нула.

Отговори:

1 за отговор № 1

Не е съвсем ясно за мен как testBundle е дефиниран, но това работи за мен:

let bundle = Bundle(for: YourClassHere.self)

Така че във вашия случай това ще бъде:

let bundle = Bundle(for: ParserTest.self)

Което можете да използвате по следния начин:

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

Версия Swift 2.3

let bundle = NSBundle(forClass: ParserTest.self)

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

Надявам се, че ви помага.


0 за отговор № 2

опитайте по следния начин:

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