在Swift 3.0中创建目录

Nee*_*eld 27 ios swift swift3

我是一名9年级学习快速学习的新生,创建了一个学校项目.

我正在尝试创建一个目录,我想将扫描的文件保存为pdf格式.

在创建目录时,我收到以下错误.

错误1:

不能在属性初始值设定项中使用实例成员'filemgr'; 属性初始化程序在'self'可用之前运行.

错误2:

预期的声明

码:

let filemgr = FileManager.default


let dirPaths = filemgr.urls(for: .documentDirectory, in: .userDomainMask)

let docsURL = dirPaths[0]

let newDir = docsURL.appendingPathComponent("data").path

do{
    try filemgr.createDirectory(atPath: newDir,withIntermediateDirectories: true, attributes: nil)
} catch {
    print("Error: \(error.localizedDescription)")
}
Run Code Online (Sandbox Code Playgroud)

请协助我解决这个问题.

谢谢.

Avi*_*ash 40

对于Swift 4.0 请使用此功能

    let fileManager = FileManager.default
    if let tDocumentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
        let filePath =  tDocumentDirectory.appendingPathComponent("\(FOLDER_NAME)") 
        if !fileManager.fileExists(atPath: filePath.path) {
            do {
                try fileManager.createDirectory(atPath: filePath.path, withIntermediateDirectories: true, attributes: nil)
            } catch {
                NSLog("Couldn't create document directory")
            }
        }
        NSLog("Document directory is \(filePath)")
    }
Run Code Online (Sandbox Code Playgroud)


Pra*_*ani 32

请写下这段代码:

Swift 4.0Swift 3.0

let documentsPath1 = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
let logsPath = documentsPath1.appendingPathComponent("data")
do 
{
    try FileManager.default.createDirectory(atPath: logsPath!.path, withIntermediateDirectories: true, attributes: nil)
} 
catch let error as NSError 
{
    NSLog("Unable to create directory \(error.debugDescription)")
} 
Run Code Online (Sandbox Code Playgroud)

  • 从日志看起来像它创建目录,如何从GUI访问它来存储扫描仪捕获的文件或图片? (4认同)

Cod*_*der 16

对于Swift 4.0,我创建了以下扩展URL,允许从应用程序中的文档目录创建文件夹.

import Foundation

extension URL {
    static func createFolder(folderName: String) -> URL? {
        let fileManager = FileManager.default
        // Get document directory for device, this should succeed
        if let documentDirectory = fileManager.urls(for: .documentDirectory,
                                                    in: .userDomainMask).first {
            // Construct a URL with desired folder name
            let folderURL = documentDirectory.appendingPathComponent(folderName)
            // If folder URL does not exist, create it
            if !fileManager.fileExists(atPath: folderURL.path) {
                do {
                    // Attempt to create folder
                    try fileManager.createDirectory(atPath: folderURL.path,
                                                    withIntermediateDirectories: true,
                                                    attributes: nil)
                } catch {
                    // Creation failed. Print error & return nil
                    print(error.localizedDescription)
                    return nil
                }
            }
            // Folder either exists, or was created. Return URL
            return folderURL
        }
        // Will only be called if document directory not found
        return nil
    }
}
Run Code Online (Sandbox Code Playgroud)

如果所需的文件夹不存在,它将创建它.然后,假设文件夹存在,它将返回URL给用户.否则,如果失败,则nil返回.

例如,要创建文件夹"MyStuff",您可以这样调用它:

let myStuffURL = URL.createFolder(folderName: "MyStuff")
Run Code Online (Sandbox Code Playgroud)

这将返回:

文件:/// VAR /移动/容器/数据/应用/ 4DE0A1C0-8629-47C9-87D7-C2B4F3A16D24 /文档/的MyStuff /

您还可以使用以下内容创建嵌套文件夹:

let myStuffHereURL = URL.createFolder(folderName: "My/Stuff/Here")
Run Code Online (Sandbox Code Playgroud)

哪个给你:

文件:///无功/移动/集装箱/数据/应用/ 4DE0A1C0-8629-47C9-87D7-C2B4F3A16D24 /文档/我的/东西/这里/