无法从移动或模拟器文件系统加载NSData(contentsOfFile:文件路径),但它适用于OS X文件系统

时间:2015-11-18 14:22:01

标签: ios swift nsdata ssziparchive

我下载了一个包含XML文件的ZIP文件。我用SSZipArchive解压缩文件并将文件保存在目录/库下的app沙箱中。

例如:

  

的/ var /移动/容器/数据/应用/ 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(file path) - >评估为真 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);}

1 个答案:

答案 0 :(得分:0)

尝试从本地路径创建NSURL

NSData(contentsOfURL: NSURL(fileURLWithPath: filePath))