2017-07-06 4 views
0

Je sauvegarde une image de caméra dans mon répertoire de documents. Je crée un répertoire de documents dans ma classe util. Voici ci-dessous est mon code: -L'image n'existe pas dans le répertoire de documents si je réexécute l'application à l'aide de Swift 3

//Get Document Directory Path 
func getDirectoryPath() -> String { 
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("Phss") 
    return paths 
} 

//Create Directory 
func createDirectory(){ 
    let fileManager = FileManager.default 

    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("Phss") 

    if !fileManager.fileExists(atPath: paths){ 
    try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil) 
    } 

    else{ 
    Helper.sharedInstance.Print("Already dictionary created." as AnyObject) 
    } 
} 

Après que je gardais l'image par son nom et une valeur (docAddedTime) et stocker le chemin (imagePath) dans mes données de base DB. J'obtiens un chemin d'image par image qui est enregistré dans mon DB de données de base local.

let fileManager = FileManager.default 
    let imagePAth = doc!.docPath! //Core Data DB Path of image 

    if fileManager.fileExists(atPath: imagePAth) { 
     imgView.image = UIImage(contentsOfFile: imagePAth 
     } 

Le problème est la première fois que je suis capable d'aller chercher l'image et montre dans mon imageView mais après que je vais courir à nouveau l'application et je suis en train de chercher l'image par ce imagePath qui est stocké dans mes données de base DB alors il ne donne pas ce fichier existe à ce chemin.

L'image est présente sur le même chemin, mais aucune sortie n'apparaît. Je ne suis pas sûr de la raison pour laquelle cela arrive.

+0

Are yo Est-ce que vous êtes sûr que dans la deuxième fois, le chemin de votre image est le même que la première fois? Essayez de l'imprimer –

+0

Oui. Et l'image est présente dans le répertoire du document. Mais pas en mesure de montrer. – kishor0011

+1

Enregistrer l'image dans le répertoire documents/Phss ... Stockez uniquement l'image * nom * sur votre BD ... La prochaine fois que vous lancez l'application, récupérez l'image * nom * de votre BD, ajoutez-la aux documents/Phss répertoire, charger l'image. – DonMag

Répondre

0
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
let url = URL(fileURLWithPath: paths).appendingPathComponent("fileName") 

Vous pouvez essayer l'extrait ci-dessus. Celui-ci ne crée pas un répertoire, je suggère d'abord d'aller chercher directement dans le répertoire Documents, une fois que c'est un succès puis de créer un répertoire puis de le stocker. Laissez-moi connaître le scénario exact. Quelle est la valeur du chemin affiché lors de la prochaine exécution?

+0

En fait je ne sais pas pourquoi cela se passe mais j'ai compris qu'une chose est pour récupérer l'image Je dois créer le même chemin encore Je veux dire que je ne peux pas utiliser CreData DB même chemin. – kishor0011

0

Chaque fois que vous construisez l'application à partir de Xcode, un nouveau dossier est créé et les fichiers seront dans le nouveau dossier.

Ne pas reconstruire l'application, il suffit de fermer l'application à partir du simulateur et redémarrer l'application à partir du simulateur lui-même.

chemin complet de votre fichier sera comme:

file:///Users/username/Library/Developer/CoreSimulator/Devices/4FA96815-521B-4D84-B5C7-10697DE1908B/data/Containers/Data/Application/54CC678C-7E96-4DB6-83CC-6ECB506DC9BF/Documents/tmp.png 

Sur la prochaine construction:

Application/54CC678C-7E96-4DB6-83CC-6ECB506DC9BF/Documents/ 

sera modifié comme suit:

Application/3F3093C6-2140-473B-8F99-A717AF162CDE/Documents/ 

3F3093C6-2140-473B-8F99-A717AF162CDE est créé par Xcode pas vous