2017-02-15 2 views
1

J'ai une fonction qui déplace avec succès un fichier dans le groupe d'applications partagé, mais ma fonction de suppression de ce fichier ne semble pas fonctionner. Si j'imprime la variable fullpath2, il semble être l'emplacement correct, mais le fichier n'est pas supprimé et une erreur n'est pas renvoyée.Suppression d'un fichier du groupe d'applications partagées

Voici ma fonction:

func getSharedFilePath(appGroup:String,sharedFilename:String)->URL? { 

if let directoryPath = FileManager().containerURL(forSecurityApplicationGroupIdentifier: appGroup) { 
    return directoryPath.appendingPathComponent(sharedFilename) 
} else { 
    return nil 
} 
} 


public func deleteFromSharedFile(sharedFilename: String, fileExtension: String)->String { 
let sharedFilename = "\(sharedFilename).\(fileExtension)" 
guard let url = getSharedFilePath(appGroup:applicationGroup,sharedFilename:sharedFilename) else { 
    return("Error getting shared file path") 
} 

// read file from file system to data variable 
let fileManager = FileManager.default 
do { 
    try fileManager.removeItem(atPath: (url.path)) 
    return("File Removed") 
} 
catch let error as NSError { 
    return("File Remove Failed - \(error)") 
} 
} 
+0

'url.absoluteString' est incorrect. Vous devez obtenir son chemin. 'Essayez fileManager.removeItem (atPath: url.path)'. BTW absoluteString renvoie aussi le schéma d'url ('file: //' dans ce cas) et vous l'ajoutez et vous le retirez à la ligne suivante. –

+0

@LeoDabus L'utilisation de url.path n'a pas fonctionné non plus – Nate23VT

+0

mettre à jour votre question avec votre code réel –

Répondre

2

Voici quelques extrait de code de mon application emoji.

Cela fonctionne bien.

func removeImage(itemName: String, fileExtension: String) { 
    let fileName:String = itemName + "." + fileExtension 
    let fileManager = FileManager.default 
    guard let groupURL = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "group.io.XXXXXX.XXXX") else { 
     return 
    } 
    let storagePathUrl = groupURL.appendingPathComponent("image/" + fileName, isDirectory: false) 
    let storagePath = storagePathUrl.path 

    do { 
     if fileManager.fileExists(atPath: storagePath) { 
      try fileManager.removeItem(atPath: storagePath) 
     } 
    } catch let error as NSError { 
     print(error.debugDescription) 
    } 
} 

"image" est simplement le nom du sous-dossier du groupe d'applications.

Si vous enregistrez des fichiers directement dans le dossier racine, vous pouvez les supprimer.

J'espère que ça vous aide.