Comment créer un fichier texte pour l'écriture

J'ai un problème pour écrire du texte dans un fichier. Ce que j'ai fait jusqu'à présent est la suivante: j'ai une chaîne de caractères contenant le texte pour stocker et le nom de fichier aussi comme une chaîne de caractères.

let someText = "abcd"
let fileName = "file:///xxx"

De cours "xxx" est un .txt fichier dans le répertoire du document de sorte qu'il doit être possible d'écrire.

Puis j'ai découvert que je peux utiliser la méthode d'écriture o la chaîne. Mais pour cet appel j'ai besoin du nom de fichier de l'url j'ai donc ce morceau de code:

let fileUrl = URL(string: fileName)
do {
    try someText.write(to: fileUrl, atomically: false, encoding: String.Encoding.utf8)
}
catch { }

Si je commence mon application, j'obtiens une erreur "Le fichier xxx n'existe pas". Ok c'est correct parce que le fichier n'est pas créé. J'ai pensé que la méthode d'écriture le fait automatiquement, mais il ne semble pas si.

Et c'est là que je ne sais pas comment résoudre ce problème!

Je suis en utilisant Xcode 8 + Swift 3.

+++ MODIFIER +++

J'essaie d'expliquer ce que je suis exactement à la recherche de.

Disons que j'ai deux tâches: La première tâche construit des noms de fichiers et les stocke dans une base de données. C'est pourquoi je travaille avec des cordes:

var fileName = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).path
if (!fileName.hasSuffix("/")) {
    fileName += "/"
}
fileName += "file.txt"

Comme vous pouvez le voir, le fichier n'est pas créé à cet instant parce que je n'ai besoin que du nom de dans cette tâche.

Ok, puis de la deuxième tâche. Il a pour sélectionner un nom de fichier spécifique à partir de la base de données et l'ajouter à la file://régime:

let fileName = "file://" + fileNameFromDatabase

Ensuite, le texte est écrit avec le code ci-dessus.

Il est clair que le fichier n'existe pas dans cette tâche, car je n'ai que le nom. C'est pourquoi je pense que le message d'erreur de la méthode d'écriture est correcte.

Ce que je suis maintenant à la recherche d'une possibilité de créer le fichier/écrire le texte en une seule étape.

  • Est une erreur est générée lorsque vous appelez write?
  • Désolé de mon erreur. J'ai oublié de dire: Une erreur est renvoyée lequel j'ai coulé à NSError et la localizedDescription est le message que j'ai écrit dans mon post Le fichier xxx n'existe pas.
  • Vous obtenez cette erreur lorsque vous essayez d'écrire le fichier? Cela ne semble pas juste.
  • L'erreur est générée directement après essayer d'écrire.
  • Vous dites que le fichier soit dans le dossier Documents. Entendez-vous directement dans le dossier Documents ou dans certains sous-dossier de Documents? Et de mettre à jour votre question en montrant comment vous vraiment obtenir la valeur de fileName.
  • Vous avez une variable nommée fileNameFromDatabase. Est-ce le chemin d'accès complet (y compris le chemin d'accès complet du dossier de Documents)? C'est mauvais parce que c'change souvent. Ne jamais conserver un chemin d'accès complet. Simplement obtenir le chemin d'accès vers le dossier Documents à l'exécution, puis ajouter le nom du fichier à que.

InformationsquelleAutor altralaser | 2016-10-12