无法创建日志目录

Riz*_*ikh 25 xcode cocoa-touch ipad ios swift

当我在iPad上测试我的应用程序时,它运行完美,即调用数据库,创建文件夹并执行其他任务,但在控制台中显示我

2015-05-12 11:25:32.478 MyApp [291:19680] [PLLogging]无法创建日志目录:操作无法完成.(可可错误513.).

当我搜索时,发现这个答案NSFileManager创建文件夹(Cocoa error 513.)

但不要删除这个.
此外,当我关闭并重新启动iPad时,此行未显示

题:

  1. 为什么我在控制台中得到这个声明?
  2. 以上声明可能会在将来崩溃我的应用程序?
  3. 如何清除Cocoa error 513?

这是我调用数据库的代码

let fileManager = NSFileManager()
var Sourcepath = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("DataBase.db");
let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as! String
let databaseStr = "DataBase.db"
let dbPath = docsPath.stringByAppendingPathComponent(databaseStr)
println(dbPath)    
if(fileManager .fileExistsAtPath(dbPath) == false) {

    var error:NSError?
    fileManager.copyItemAtPath(Sourcepath!, toPath: dbPath, error: &error)
    println(error)
}
Run Code Online (Sandbox Code Playgroud)

这是一个创建日志文件夹的函数

func CreateLog(Log:String)
{
    autoreleasepool{

        var formatter:NSDateFormatter! = NSDateFormatter()
        formatter.dateFormat = "yyyy-MM-dd";
        var DateString = formatter.stringFromDate(NSDate()).stringByAppendingString("_tempLogs")
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss";
        var FileManager:NSFileManager! = NSFileManager.defaultManager()

        var LogFolder = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("Logs")
        let searchPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as! String
        let LogStr = "Logs"
        let LogFolderPath = searchPath.stringByAppendingPathComponent(LogStr)

        if(FileManager.fileExistsAtPath(LogFolderPath) == false)
        {
            var error:NSError?
            FileManager.createDirectoryAtPath(LogFolderPath, withIntermediateDirectories: true, attributes: nil, error: &error)

        }
        var LogPath = LogFolderPath.stringByAppendingPathComponent(DateString).stringByAppendingPathExtension("txt")
        var WriteString = (formatter.stringFromDate(NSDate()).stringByAppendingString(" ").stringByAppendingString(Log).stringByAppendingString("\n"));
        var Data = WriteString.dataUsingEncoding(NSUTF8StringEncoding)
        if(!FileManager.fileExistsAtPath(LogPath!))
        {
            FileManager.createFileAtPath(LogPath!, contents: Data, attributes: nil)
        }
        else
        {
            var output = NSFileHandle(forWritingAtPath: LogPath!);
            output?.seekToEndOfFile();
            output?.writeData(Data!);
            output?.closeFile()
            output = nil
        }
        formatter = nil
        FileManager = nil

    }

}
Run Code Online (Sandbox Code Playgroud)

小智 1

513是权限问题(NSFileWriteNoPermissionError)。

尝试打印 LogFolderPath 并仔细检查它是否正确(或将结果发布到此处)。

D .

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时对自己的帖子发表评论,一旦您拥有足够的[声誉](http://stackoverflow.com/help/whats-reputation),您就会能够[对任何帖子发表评论](http://stackoverflow.com/help/privileges/comment)。 (3认同)