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
)。
要将捆绑包与命令行工具一起使用,您需要确保将资源文件添加为构建阶段的一部分。听起来您很欣赏这一点,但没有正确执行。以下内容在快速演示应用程序中对我有用:
- 将资源添加到您的项目。
- Select 项目导航器中的项目文件。
- 添加新的复制文件阶段。
- 向您在 步骤 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.)
我正在使用命令行工具,试图检索存储在名为 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
)。
要将捆绑包与命令行工具一起使用,您需要确保将资源文件添加为构建阶段的一部分。听起来您很欣赏这一点,但没有正确执行。以下内容在快速演示应用程序中对我有用:
- 将资源添加到您的项目。
- Select 项目导航器中的项目文件。
- 添加新的复制文件阶段。
- 向您在 步骤 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.)