Je suis ici avec une question qui a probablement une réponse très simple que j'oublie ... comment puis-je récupérer des fichiers locaux avec NSURL? Je l'ai ici:
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()
}
Mais après avoir construit avec succès, il se bloque sur var urlpath. J'ai cherché et essayé quelques suggestions ici et ailleurs sans succès. Veuillez aider? :(
Vous essayez de charger un fichier à partir de votre système de fichiers, pas à partir du Web.
Pour créer le NSURL
, vous devez utiliser la méthode de classe fileURLWithPath: .
Changez votre méthode comme:
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()
}
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()
}
Remarque: Dans Swift 3, vous pouvez également utiliser l'url classe pour construire l'url au lieu de la classe NSURL
. Ainsi, le code ci-dessus pour la construction de l'url devient:
let url = URL(fileURLWithPath: urlpath!)
Vous devez utiliser URLForResource (_: withExtension :) au lieu de pathForResource:
let fileUrl = Bundle.main.url(forResource: "bpreg", withExtension: "xml")
Votre fichier n'existe pas encore dans votre bundle principal.
Vous devez ajouter le fichier que vous utilisez à votre Bundle Resource.
Donc, pour l'ajouter. Aller à App Target -> Build Phases
et vérifiez le Bundle Resource
et ajoutez-le par glisser-déposer.