URLForResource()总是返回nil,swift 2.3,iOS10

时间:2016-10-06 12:25:54

标签: ios swift xcode

我正在尝试测试某些东西,并且需要访问与测试类位于同一目录中的文件(实际上是在子目录中)。我想这样做:

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

我也尝试过这样:

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

我的班级被称为ParserTest。我尝试访问的文件位于如下所示: enter image description here

我试图获取文件路径:

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

我尝试删除inDirectory,并将" CallInTests / Calendar"放入。没有任何效果。 文件本身被添加到目标中以进行测试:

enter image description here

AND项目: enter image description here

无论我做什么,fileURL总是返回nil。

2 个答案:

答案 0 :(得分: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 :)
}

希望对你有所帮助。

答案 1 :(得分:0)

尝试以下方式:

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