【问题标题】:writing to Application Support directory写入应用程序支持目录
【发布时间】:2015-09-15 17:37:10
【问题描述】:

我正在尝试使用此代码写入 ApplicationSupport 目录。当我单击按钮时,我收到一个错误,而不是可选值为零。将文件写入ApplicationSupport目录的正确方法是什么?

class ViewController: UIViewController{
    let fileManager = NSFileManager.defaultManager()
    var suppDir: String = ""
    var test: String = "huhu"
    @IBOutlet weak var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        suppDir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.ApplicationSupportDirectory, NSSearchPathDomainMask.UserDomainMask, true).first!

        if !fileManager.fileExistsAtPath(suppDir){
            do{
                try fileManager.createDirectoryAtPath(suppDir, withIntermediateDirectories: true, attributes: nil)
            }catch{}

        }

        do{
            try test.writeToFile(suppDir, atomically: false, encoding: NSUTF8StringEncoding)
        }catch{}

    }


    @IBAction func buttonPressed(sender: UIButton) {

        let data = fileManager.contentsAtPath(suppDir)
        let datastring = NSString(data: data!, encoding:NSUTF8StringEncoding)
        button.setTitle(String(datastring), forState: UIControlState.Normal)
    }
}

【问题讨论】:

    标签: ios swift writetofile data-persistence


    【解决方案1】:

    您正在尝试写入支持目录,而不是其中的文件:

    try test.writeToFile(suppDir, atomically: false, encoding: NSUTF8StringEncoding)
    

    你需要:

    let filename = suppDir.stringByAppendingPathComponent("some_file.dat")
    try test.writeToFile(filename, atomically: false, encoding: NSUTF8StringEncoding)
    

    您还需要报告任何错误,这将有助于开发和部署。

    【讨论】:

    • 很好,有帮助。为什么我需要报告任何错误?
    • 所以你知道为什么事情失败了。您只需要记录它,不需要警报对话框。
    • 好的,但如果事情没有失败,那就没必要了,对吧?
    • 大声笑,说真的,你可能永远不知道事情什么时候开始失败,因此日志可以帮助你解决这个问题;也不是每个问题都是可重现的,因此日志可能是快速帮助您解决问题的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多