J'ai besoin de lire et d'écrire des données vers / depuis un fichier texte, mais je n'ai pas réussi à comprendre comment.
J'ai trouvé cet exemple de code dans l'iBook du Swift, mais je ne sais toujours pas comment écrire ou lire des données.
import Cocoa
class DataImporter
{
/*
DataImporter is a class to import data from an external file.
The class is assumed to take a non-trivial amount of time to initialize.
*/
var fileName = "data.txt"
// the DataImporter class would provide data importing functionality here
}
class DataManager
{
@lazy var importer = DataImporter()
var data = String[]()
// the DataManager class would provide data management functionality here
}
let manager = DataManager()
manager.data += "Some data"
manager.data += "Some more data"
// the DataImporter instance for the importer property has not yet been created”
println(manager.importer.fileName)
// the DataImporter instance for the importer property has now been created
// prints "data.txt”
var str = "Hello World in Swift Language."
//reading
fait exactement cela.En supposant que vous avez déplacé votre fichier texte
data.txt
vers votre projet Xcode (utilisez drag'n'drop et cochez "Copier les fichiers si nécessaire"), vous pouvez effectuer les opérations suivantes, tout comme dans Objective-C:Mise à jour:
pour lire un fichier depuis Bundle (iOS), vous pouvez utiliser:
Mise à jour pour Swift 3:
Pour Swift 5
la source
Xcode 8.x • Swift 3.x ou version ultérieure
la source
Nouvelle méthode plus simple et recommandée: Apple recommande d'utiliser des URL pour le traitement des fichiers et les autres solutions semblent ici obsolètes (voir les commentaires ci-dessous). Ce qui suit est la nouvelle façon simple de lire et d'écrire avec les URL (n'oubliez pas de gérer les erreurs d'URL possibles):
Swift 5+, 4 et 3.1
la source
Xcode 8, Swift 3 façons de lire le fichier à partir du bundle d'application:
Voici une extension pratique de copier-coller
Par exemple
Vous voulez presque toujours un tableau de lignes:
la source
Je veux vous montrer seulement la première partie, qui est lue . Voici comment lire simplement:
Swift 3:
Swift 2:
la source
Manière la plus simple de lire un fichier dans Swift> 4.0
la source
La réponse acceptée ci-dessus d'Adam avait quelques erreurs pour moi, mais voici comment j'ai retravaillé sa réponse et fait en sorte que cela fonctionne pour moi.
la source
Vous pouvez trouver cet outil utile non seulement pour lire à partir d'un fichier dans Swift, mais également pour analyser votre entrée: https://github.com/shoumikhin/StreamScanner
Spécifiez simplement le chemin du fichier et les délimiteurs de données comme ceci:
J'espère que cela t'aides.
la source
J'ai dû recoder comme ceci:
la source
Dans l'exemple de fonction, (lecture | écriture) DocumentsFromFile (...) ayant certains wrappers de fonction semble certainement logique puisque tout dans OSx et iOS semble avoir besoin de trois ou quatre classes principales instanciées et d'un tas de propriétés, configurées, liées, instancié et défini, juste pour écrire "Salut" dans un fichier, dans 182 pays.
Cependant, ces exemples ne sont pas suffisamment complets pour être utilisés dans un vrai programme. La fonction d'écriture ne signale aucune erreur lors de la création ou de l'écriture dans le fichier. À la lecture, je ne pense pas que ce soit une bonne idée de renvoyer une erreur indiquant que le fichier n'existe pas en tant que chaîne censée contenir les données lues. Vous voudriez savoir qu'il a échoué et pourquoi, à travers un mécanisme de notification, comme une exception. Ensuite, vous pouvez écrire du code qui renvoie quel est le problème et permet à l'utilisateur de le corriger, ou "correctement" interrompt le programme à ce stade.
Vous ne voudriez pas simplement renvoyer une chaîne contenant un «fichier d'erreur n'existe pas». Ensuite, vous devrez rechercher l'erreur dans la chaîne de l'appel de fonction à chaque fois et la gérer. Vous ne pouvez également pas vraiment savoir si la chaîne d'erreur a été réellement lue à partir d'un fichier réel ou si elle a été produite à partir de votre code.
Vous ne pouvez même pas appeler la lecture comme ceci dans swift 2.2 et Xcode 7.3 car NSString (contentsOfFile ...) lève une exception. Il s'agit d'une erreur de compilation si vous n'avez pas de code pour l'attraper et faire quelque chose avec, comme l'imprimer sur stdout, ou mieux, une fenêtre contextuelle d'erreur ou stderr. J'ai entendu dire qu'Apple s'éloignait des tentatives de capture et des exceptions, mais cela va être long et il n'est pas possible d'écrire du code sans cela. Je ne sais pas d'où vient l'argument & error, peut-être une version plus ancienne, mais NSString.writeTo [File | URL] n'a pas actuellement d'argument NSError. Ils sont définis comme ceci dans NSString.h:
En outre, le fichier inexistant n'est que l'un des nombreux problèmes potentiels que votre programme pourrait rencontrer lors de la lecture d'un fichier, tels qu'un problème d'autorisations, la taille du fichier ou de nombreux autres problèmes pour lesquels vous ne voudriez même pas essayer de coder un gestionnaire pour chacun d'entre eux. Il vaut mieux supposer que tout est correct et attraper et imprimer, ou gérer, une exception si quelque chose ne va pas, d'ailleurs, à ce stade, vous n'avez pas vraiment le choix de toute façon.
Voici mes réécritures:
la source
Pour mon fichier txt fonctionne de cette façon:
la source
Pour éviter toute confusion et ajouter de la facilité, j'ai créé deux fonctions pour lire et écrire des chaînes dans des fichiers du répertoire des documents. Voici les fonctions:
Voici un exemple de leur utilisation:
J'espère que cela t'aides!
Version Xcode: 6.3.2
la source
Dernier code swift3
Vous pouvez lire les données d'un fichier texte en utilisant simplement le code ci-dessous Ce fichier texte
}
Vous pouvez utiliser ce code pour obtenir des données du fichier texte json dans swift3
la source
Cela fonctionne avec Swift 3.1.1 sous Linux:
la source
écrire dans ViewDidLoad
la source
Les solutions antérieures répondent à la question, mais dans mon cas, la suppression de l'ancien contenu du fichier lors de l'écriture était un problème.
J'ai donc créé un morceau de code pour écrire dans un fichier dans le répertoire des documents sans supprimer le contenu précédent. Vous avez probablement besoin d'une meilleure gestion des erreurs, mais je pense que c'est un bon point de départ. Swift 4. Utilisation:
Méthodes d'assistance:
la source
Swift 3.x - 5.x
Le meilleur exemple est de créer un local
Logfile
avec une extension.txt
qui peut être visible et affichée"Files App"
avec la date et l'heure actuelles comme nom de fichieril suffit d'ajouter ce code dans info.plist activer ces deux fonctionnalités
et cette fonction ci-dessous
la source
la source
Xcode 8.3.2 3.x Swift . Utilisation de NSKeyedArchiver et NSKeyedUnarchiver
Lecture de fichiers à partir de documents
Écrire un fichier dans des documents
la source