如何使用 NSURL 检索本地文件?
How can I retrieve local files with NSURL?
我的问题可能有一个非常简单的答案,但我忽略了...如何使用 NSURL 检索本地文件?我这里有这个:
override func viewDidLoad() {
super.viewDidLoad()
var urlpath = NSBundle.mainBundle().pathForResource("bpreg", ofType: "xml")
let url:NSURL = NSURL(string: urlpath!)!
parser = NSXMLParser(contentsOfURL: url)!
parser.delegate = self
parser.parse()
}
但在成功构建后,它挂在 var urlpath 上。我四处搜索并在这里和其他地方尝试了一些建议但无济于事。请帮忙? :(
您的文件还不存在于您的主包中。
您必须将您正在使用的文件添加到您的捆绑资源中。
所以补充一下。转到 App Target -> Build Phases
并选中 Bundle Resource
并通过拖放添加它。
您正在尝试从您的文件系统而不是 Web 加载文件。
要创建 NSURL
,您需要使用 fileURLWithPath: class 方法。
改变你的方法,如:
Swift 2
override func viewDidLoad()
{
super.viewDidLoad()
var urlpath = NSBundle.mainBundle().pathForResource("bpreg", ofType: "xml")
let url:NSURL = NSURL.fileURLWithPath(urlpath!)!
parser = NSXMLParser(contentsOfURL: url)!
parser.delegate = self
parser.parse()
}
Swift 3
override func viewDidLoad()
{
super.viewDidLoad()
let urlpath = Bundle.main.path(forResource: "bpreg", ofType: "xml")
let url = NSURL.fileURL(withPath: urlpath!)
parser = XMLParser(contentsOf: url)!
parser.delegate = self
parser.parse()
}
注意:在Swift3中你也可以使用URLclass来构造url而不是NSURL
class。所以上面构造url的代码改为:
let url = URL(fileURLWithPath: urlpath!)
你应该使用 URLForResource(_:withExtension:) 而不是 pathForResource:
let fileUrl = Bundle.main.url(forResource: "bpreg", withExtension: "xml")
我的问题可能有一个非常简单的答案,但我忽略了...如何使用 NSURL 检索本地文件?我这里有这个:
override func viewDidLoad() {
super.viewDidLoad()
var urlpath = NSBundle.mainBundle().pathForResource("bpreg", ofType: "xml")
let url:NSURL = NSURL(string: urlpath!)!
parser = NSXMLParser(contentsOfURL: url)!
parser.delegate = self
parser.parse()
}
但在成功构建后,它挂在 var urlpath 上。我四处搜索并在这里和其他地方尝试了一些建议但无济于事。请帮忙? :(
您的文件还不存在于您的主包中。
您必须将您正在使用的文件添加到您的捆绑资源中。
所以补充一下。转到 App Target -> Build Phases
并选中 Bundle Resource
并通过拖放添加它。
您正在尝试从您的文件系统而不是 Web 加载文件。
要创建 NSURL
,您需要使用 fileURLWithPath: class 方法。
改变你的方法,如:
Swift 2
override func viewDidLoad()
{
super.viewDidLoad()
var urlpath = NSBundle.mainBundle().pathForResource("bpreg", ofType: "xml")
let url:NSURL = NSURL.fileURLWithPath(urlpath!)!
parser = NSXMLParser(contentsOfURL: url)!
parser.delegate = self
parser.parse()
}
Swift 3
override func viewDidLoad()
{
super.viewDidLoad()
let urlpath = Bundle.main.path(forResource: "bpreg", ofType: "xml")
let url = NSURL.fileURL(withPath: urlpath!)
parser = XMLParser(contentsOf: url)!
parser.delegate = self
parser.parse()
}
注意:在Swift3中你也可以使用URLclass来构造url而不是NSURL
class。所以上面构造url的代码改为:
let url = URL(fileURLWithPath: urlpath!)
你应该使用 URLForResource(_:withExtension:) 而不是 pathForResource:
let fileUrl = Bundle.main.url(forResource: "bpreg", withExtension: "xml")