如何使用FileManager在iOS中写入文件?

时间:2018-07-21 07:00:17

标签: ios swift nsfilemanager

我有以下代码,在语句旁边的注释中带有打印语句的结果:

    let myImageData = FileManager.default.contents(atPath: myURL.absoluteString)

    var mySaveToURL: URL = FileManager.default.url(forUbiquityContainerIdentifier: nil)!
    mySaveToURL.appendPathComponent(myURL.pathComponents.last!)

    print("mySaveToURL=", mySaveToURL) // mySaveToURL= file:///Users/shinehah/Library/Developer/CoreSimulator/Devices/693D4940-1B91-43E1-B5AD-88E9763046C7/data/Library/Mobile%20Documents/iCloud~us~gnolaum~TrialNotifications/ABF236AE-A6E7-403E-ADC4-5BAA5DC734B3.jpeg


    let resultCreateFile = FileManager.default.createFile(atPath: mySaveToURL.absoluteString, contents: myImageData, attributes: nil)

    print("resultCreateFile=", resultCreateFile) // resultCreateFile= false


    do {

        try FileManager.default.copyItem(at: myURL, to: mySaveToURL)

        print("copy success!") // copy success!

    } catch {

        print(error.localizedDescription)

    }

如您所见,我无法成功执行FileManager的createFile()方法,但能够成功执行对相同URL的copyItem()方法。

我应该检查些什么才能弄清楚如何使createFile()方法起作用?

1 个答案:

答案 0 :(得分:1)

发生此错误是因为您使用了错误的API。要获取文件系统URL的路径,您必须使用path

let resultCreateFile = FileManager.default.createFile(atPath: mySaveToURL.path, contents: myImageData, attributes: nil)

但是,没有理由显式创建文件。只需复制其他文件即可。