Je suis un nouvel étudiant en 9ème année Swift , créant un projet d'école.
J'essaie de créer un répertoire dans lequel je veux enregistrer un fichier numérisé au format pdf.
Lors de la création du répertoire, je reçois une erreur ci-dessous.
Erreur 1:
Impossible d'utiliser le membre de l'instance 'filemgr' dans l'initializer de la propriété; les initialiseurs de propriété s'exécutent avant que 'self' soit disponible.
Erreur 2:
Déclaration attendue
Code:
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)")
}
Aidez-moi à résoudre ce problème.
Merci.
Pls, écris ce code:
Swift 4.0 Et Swift 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)")
}
Pour Swift 4.0 Veuillez utiliser ceci
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)")
}
Pour Swift 4.0 , j'ai créé l'extension suivante à partir de URL
qui permet la création d'un dossier à partir du répertoire de documents dans l'application.
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
}
}
Si le dossier souhaité n'existe pas, il le créera. Ensuite, en supposant que le dossier existe, il renvoie la URL
à l'utilisateur. Sinon, si cela échoue, alors nil
est renvoyé.
Par exemple, pour créer le dossier "MyStuff", appelez-le ainsi:
let myStuffURL = URL.createFolder(folderName: "MyStuff")
Cela retournerait:
fichier: /// var/mobile/Conteneurs/Données/Application/4DE0A1C0-8629-47C9-87D7-C2B4F3A16D24/Documents/MyStuff /
Vous pouvez également créer des dossiers imbriqués avec les éléments suivants:
let myStuffHereURL = URL.createFolder(folderName: "My/Stuff/Here")
Ce qui vous donne:
fichier: /// var/mobile/Conteneurs/Données/Application/4DE0A1C0-8629-47C9-87D7-C2B4F3A16D24/Documents/Mon/Stuff/Ici /