How can I retrieve local files with NSURL?
You are trying to load a file from your file system, not from web.
For creating the NSURL
you need to use fileURLWithPath: class method.
Change your method like:
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()}
Note: In Swift 3 you can also use the URL class to construct the url instead of NSURL
class. So the above code for constructing url changes to:
let url = URL(fileURLWithPath: urlpath!)
You should use URLForResource(_:withExtension:) instead of pathForResource:
let fileUrl = Bundle.main.url(forResource: "bpreg", withExtension: "xml")
Your file doesn't exist in your main-bundle yet.
You have to add the file your are using to your Bundle Resource.
So to add it. Go to App Target -> Build Phases
and check the Bundle Resource
and add it by drag n' drop.