我下载了一个包含
XML文件的ZIP文件.我用SSZipArchive解压缩文件并将文件保存在目录/库下的应用程序沙箱中.
例如:
/var/mobile/Containers/Data/Application/0A0091C2-7BC5-484F-BDBB-B2ABF305BB09/
完整的绝对文件路径是:
/var/mobile/Containers/Data/Application/0A0091C2-7BC5-484F-BDBB-B2ABF305BB09/Libary/bgb.xml
问题很奇怪,因为如果我将模拟器中的文件路径(作为绝对路径)更改为我的/Download/bgb.xml目录,我可以加载该文件.
这是我的代码:
var filepath = IOOPs().getDirectoryPath().stringByAppendingString("/bgb.xml") if(NSFileManager.defaultManager().fileExistsAtPath(filepath)){ print(" File xml existiert") var filedata : NSData if let tmpData = NSData(contentsOfFile: filepath){ parser = NSXMLParser(data: NSData(contentsOfFile: filepath)!) } } parser.delegate = self parser.parse()
fileExistsAtPath(文件路径) – >评估为真
NSData(contentsOfFile:filepath) – >评估Null / Nil
只有来自模拟器或移动设备的带路径才会出现此问题.
这是下载和解压缩的代码:
let datei = NSData(contentsOfURL: NSURL(string: "http://www.gesetze-im-internet.de/bgb/xml.zip")!)! print ( getDirectoryPath()) print("bgb.zip") speicherGesetzAufMobilemEndgerät(getDirectoryPath().stringByAppendingString("/bgb.zip"),datei: datei ) unzipFile(getDirectoryPath().stringByAppendingString("/bgb.zip"),destinationPath: getDirectoryPath().stringByAppendingString("/bgb.xml") ) func unzipFile(myZipFile: NSString,destinationPath : NSString){ let unZipped = SSZipArchive.unzipFileAtPath(myZipFile as! String,toDestination: destinationPath as! String);}
解决方法
尝试从本地路径创建NSURL:
NSData(contentsOfURL: NSURL(fileURLWithPath: filePath))