迅速。无法将文件保存到DocumentDirectory。怎么了?

时间:2016-01-19 11:26:53

标签: swift2 nsfilemanager nsdocumentdirectory

这是我的代码:

<%= render @pos, layout: 'today_items_list' %>

#app/views/pos/_today_items_list.html.erb
.tableless_cell.no_padding
   %h3.no_margin_vertical= title
     %ul.no_margin_vertical
        <%= yield %>

#app/views/post/_po.html.erb
<%= link_to "##{po.id}", po %>
<%= po.supplier.name %>

现在我想阅读这些数据:

let fileName = "someFileName"

func saveDataToFile(urlStr:String){
    let url = NSURL(string: urlStr)
    var data:NSData!
    let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
    let directory = paths[0]
    let filePath = directory.stringByAppendingPathComponent(self.fileName)
    print(filePath)//prints /Users/.../Library/Developer/CoreSimulator/Devices/1013B940-6FAB-406B-96FD-1774C670A91E/data/Containers/Data/Application/2F7139D6-C137-48BF-96F6-7579821B17B7/Documents/fileName

    let fileManager = NSFileManager.defaultManager()

    data = NSData(contentsOfURL: url!)
    print(data) // prints a lot of data     
    if data != nil{
        fileManager.createFileAtPath(filePath, contents: data, attributes: nil)
    }

}

第一个功能有什么问题?将文件保存到DocumentDirectory的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

好的,在这种情况下答案如下:

首先需要创建目录(也就是文件夹),然后才能在该目录中创建文件。

添加到代码中:

let fullDirPath = directory.stringByAppendingPathComponent(folderName)
let filePath = fullDirPath.stringByAppendingPathComponent(fileName)

do{
    try fileManager.createDirectoryAtPath(fullDirPath, withIntermediateDirectories: false, attributes: nil)
}catch let error as NSError{
    print(error.localizedDescription)
}

正如我在此之后所说,你创建了你的文件:

fileManager.createFileAtPath(filePath, contents: data, attributes: nil)

感谢Eric.D

希望有人会觉得这很有用。