2016-10-28 13 views
-2

私のアプリにロードしたいハイキング旅行の経路情報が.GPXファイルに含まれています。リモートURL(https://dl.dropboxusercontent.com/u/45741304/appsettings/Phu_si_Lung_05_01_14.gpx)からロードするとすべてがOKですが、アプリケーションバンドルからこの同じファイルを読み込むことはできません(すでに「バンドルリソースをコピー」し、正しいターゲットメンバーシップを持っています)。Swift 3.0のメインバンドルからXMLファイルをロード

ここでは、リモートURLからこのファイルをロードするための私のコードです:

var xmlParser: XMLParser! 


func startParsingFileFromURL(urlString: String) { 
    guard let url = URL(string: urlString) else { 
     print("Can't load URL: \(urlString)") 
     return 
    } 
    self.xmlParser = XMLParser(contentsOf: url) 
    self.xmlParser.delegate = self 
    let result = self.xmlParser.parse() 
    print("parse from URL result: \(result)") 
    if result == false { 
     print(xmlParser.parserError?.localizedDescription) 
    } 

} 

とメインバンドルから:アプリケーションバンドルから負荷に

func startParsingFile(fileName: String, fileType: String) { 
    guard let urlPath = Bundle.main.path(forResource: fileName, ofType: fileType) else { 
     print("Can't load file \(fileName).\(fileType)") 
     return 
    } 
    guard let url:URL = URL(string: urlPath) else { 
     print("Error on create URL to read file") 
     return 
    } 
    self.xmlParser = XMLParser(contentsOf: url) 
    self.xmlParser.delegate = self 
    let result = self.xmlParser.parse() 
    print("parse from file result: \(result)") 
    if result == false { 
     print(xmlParser.parserError?.localizedDescription) 
    } 
} 

エラー:

parse from file result: false 
Optional("The operation couldn’t be completed. (Cocoa error -1.)") 

答えて

1

あなたは言っている:

guard let urlPath = Bundle.main.path(forResource: fileName, ofType: fileType) else { 
    print("Can't load file \(fileName).\(fileType)") 
    return 
} 
guard let url:URL = URL(string: urlPath) else { 
    print("Error on create URL to read file") 
    return 
} 

まず、文字列パスをURLに変換するのは非常に愚かです。あなたはURLを望んでいることを知っていたので、なぜurl(forResource:...)に電話をかけるのですか?

第2に、の場合は、の文字列パスをURLに変換すると、file URLにする必要があります。

+0

あなたの提案に感謝します。私は 'let url = Bundle.main.url(forResource:fileName、withExtension:fileType)'に変更しました。 – HoangNA

関連する問題