Ich muss Daten in / aus einer Textdatei lesen und schreiben, konnte aber nicht herausfinden, wie.
Ich habe diesen Beispielcode im iBook des Swift gefunden, weiß aber immer noch nicht, wie ich Daten schreiben oder lesen soll.
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
macht genau das.Angenommen, Sie haben Ihre Textdatei
data.txt
in Ihr Xcode-Projekt verschoben (verwenden Sie drag'n'drop und aktivieren Sie "Dateien bei Bedarf kopieren"), können Sie wie in Objective-C Folgendes tun:Update:
Zum Lesen einer Datei aus Bundle (iOS) können Sie Folgendes verwenden:
Update für Swift 3:
Für Swift 5
quelle
Xcode 8.x • Swift 3.x oder höher
quelle
Neue einfachere und empfohlene Methode: Apple empfiehlt die Verwendung von URLs für die Dateihandhabung, und die anderen Lösungen hier scheinen veraltet zu sein (siehe Kommentare unten). Das Folgende ist die neue einfache Methode zum Lesen und Schreiben mit URLs (vergessen Sie nicht, die möglichen URL-Fehler zu behandeln):
Swift 5+, 4 und 3.1
quelle
Xcode 8, Swift 3-Methode zum Lesen von Dateien aus dem App-Bundle:
Hier ist eine praktische Erweiterung zum Kopieren und Einfügen
Beispielsweise
Sie möchten fast immer eine Reihe von Zeilen:
quelle
Ich möchte Ihnen nur den ersten Teil zeigen, der gelesen wird . So einfach können Sie lesen:
Swift 3:
Swift 2:
quelle
Einfachste Möglichkeit, eine Datei in Swift> 4.0 zu lesen
quelle
Die aktuell akzeptierte Antwort von Adam hatte einige Fehler für mich, aber hier ist, wie ich seine Antwort überarbeitet und diese Arbeit für mich gemacht habe.
quelle
Sie können dieses Tool nützlich finden, um nicht nur in Swift aus einer Datei zu lesen, sondern auch Ihre Eingaben zu analysieren: https://github.com/shoumikhin/StreamScanner
Geben Sie einfach den Dateipfad und die Datenbegrenzer wie folgt an:
Hoffe das hilft.
quelle
Ich musste so umkodieren:
quelle
Im Funktionsbeispiel scheint (read | write) DocumentsFromFile (...) mit einigen Funktionsumschlägen sicherlich sinnvoll zu sein, da für alles in OSx und iOS drei oder vier Hauptklassen instanziiert und eine Reihe von Eigenschaften konfiguriert, verknüpft, verknüpft werden müssen. instanziiert und eingestellt, nur um "Hallo" in eine Datei in 182 Ländern zu schreiben.
Diese Beispiele sind jedoch nicht vollständig genug, um in einem realen Programm verwendet zu werden. Die Schreibfunktion meldet keine Fehler beim Erstellen oder Schreiben in die Datei. Beim Lesen halte ich es nicht für eine gute Idee, einen Fehler zurückzugeben, dass die Datei nicht als Zeichenfolge vorhanden ist, die die gelesenen Daten enthalten soll. Sie möchten wissen, dass es fehlgeschlagen ist und warum, durch einen Benachrichtigungsmechanismus, wie eine Ausnahme. Anschließend können Sie Code schreiben, der das Problem ausgibt und es dem Benutzer ermöglicht, es zu beheben, oder das Programm an diesem Punkt "korrekt" unterbricht.
Sie möchten nicht einfach eine Zeichenfolge mit der Aufschrift "Fehlerdatei existiert nicht" zurückgeben. Dann müssten Sie jedes Mal nach dem Fehler in der Zeichenfolge suchen, wenn Sie die Funktion aufrufen, und ihn dort behandeln. Möglicherweise konnten Sie auch nicht wirklich feststellen, ob die Fehlerzeichenfolge tatsächlich aus einer tatsächlichen Datei gelesen wurde oder ob sie aus Ihrem Code erstellt wurde.
Sie können den Lesevorgang in Swift 2.2 und Xcode 7.3 nicht einmal so aufrufen, da NSString (contentOfFile ...) eine Ausnahme auslöst. Es ist ein Fehler bei der Kompilierung, wenn Sie keinen Code haben, um ihn abzufangen und etwas damit zu tun, z. B. Drucken auf stdout oder besser ein Fehler-Popup-Fenster oder stderr. Ich habe gehört, dass Apple sich von Try Catch und Ausnahmen entfernt, aber es wird ein langer Schritt sein und es ist nicht möglich, Code ohne dies zu schreiben. Ich weiß nicht, woher das Argument & error stammt, möglicherweise eine ältere Version, aber NSString.writeTo [Datei | URL] hat derzeit kein NSError-Argument. Sie sind in NSString.h wie folgt definiert:
Die nicht vorhandene Datei ist nur eines von vielen potenziellen Problemen, die Ihr Programm beim Lesen einer Datei haben kann, z. B. ein Berechtigungsproblem, die Dateigröße oder zahlreiche andere Probleme, für die Sie nicht einmal versuchen möchten, einen Handler zu codieren jeder von Ihnen. Es ist am besten, einfach davon auszugehen, dass alles korrekt ist, und eine Ausnahme zu fangen und zu drucken oder zu behandeln, wenn etwas nicht stimmt. Außerdem haben Sie zu diesem Zeitpunkt ohnehin keine Wahl.
Hier sind meine Umschreibungen:
quelle
Für meine txt-Datei funktioniert das so:
quelle
Um Verwirrung zu vermeiden und die Arbeit zu vereinfachen, habe ich zwei Funktionen zum Lesen und Schreiben von Zeichenfolgen in Dateien im Dokumentenverzeichnis erstellt. Hier sind die Funktionen:
Hier ist ein Beispiel für ihre Verwendung:
Hoffe das hilft!
Xcode-Version: 6.3.2
quelle
Neuester swift3-Code
Sie können Daten aus einer Textdatei lesen. Verwenden Sie einfach den folgenden Code. Dies ist meine Textdatei
}}
Mit diesem Code können Sie Daten aus der Text-JSON-Datei in swift3 abrufen
quelle
Dies funktioniert mit Swift 3.1.1 unter Linux:
quelle
Schreiben Sie in ViewDidLoad
quelle
Frühere Lösungen beantworten Fragen, aber in meinem Fall war das Löschen des alten Inhalts der Datei während des Schreibens ein Problem.
Also habe ich einen Code zum Schreiben in eine Datei im Dokumentenverzeichnis erstellt, ohne vorherigen Inhalt zu löschen. Sie brauchen wahrscheinlich eine bessere Fehlerbehandlung, aber ich glaube, es ist ein guter Ausgangspunkt. Swift 4. Verwendung:
Hilfsmethoden:
quelle
Swift 3.x - 5.x.
Das beste Beispiel ist das Erstellen eines lokalen Objekts
Logfile
mit einer Erweiterung.txt
, die im"Files App"
Dateinamen mit dem aktuellen Datum und der aktuellen Uhrzeit angezeigt und angezeigt werden kannFügen Sie einfach diesen Code in info.plist hinzu und aktivieren Sie diese beiden Funktionen
und diese Funktion unten
quelle
quelle
Xcode 8.3.2 Swift 3.x. . Verwenden von NSKeyedArchiver und NSKeyedUnarchiver
Datei aus Dokumenten lesen
Datei in Dokumente schreiben
quelle