pathForResource returns nil in Mac OS X 控制台应用程序 — Swift

pathForResource returns nil in Mac OS X Console Application — Swift

我正在使用命令行工具,试图检索存储在名为 words.txt 的文件中的单词列表的路径。该文件被添加到项目中,包括在项目的目标成员中,并在目标的复制文件构建阶段被选择复制。 在 Main.swift 这个代码里面:

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

打印 "Could not find path"。 mainBundle() class 函数是要访问的正确包吗?关于为什么 pathForResource 函数 returns nil 的任何想法?

命令行工具不使用包,它们只是一个原始的可执行文件,与复制文件构建阶段或 NSBundle class.

不兼容

您必须将文件存储在其他地方(例如,~/Library/Application Support)。

要将捆绑包与命令行工具一起使用,您需要确保将资源文件添加为构建阶段的一部分。听起来您很欣赏这一点,但没有正确执行。以下内容在快速演示应用程序中对我有用:

  1. 将资源添加到您的项目。

  1. Select 项目导航器中的项目文件。

  1. 添加新的复制文件阶段

  1. 向您在 步骤 3 中添加的阶段添加来自 步骤 1 的文件。您可以通过单击 + 按钮(圈出),然后导航到相关文件来执行此操作。


构建项目时,您现在应该可以使用 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.)