Necesito leer y escribir datos en / desde un archivo de texto, pero no he podido averiguar cómo.
Encontré este código de muestra en el iBook de Swift, pero todavía no sé cómo escribir o leer datos.
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
hace exactamente eso.Suponiendo que ha movido su archivo de texto
data.txt
a su proyecto Xcode (use arrastrar y soltar y marque "Copiar archivos si es necesario") puede hacer lo siguiente al igual que en Objective-C:Actualización:
para leer un archivo de Bundle (iOS) puede usar:
Actualización para Swift 3:
Para Swift 5
fuente
Xcode 8.x • Swift 3.xo posterior
fuente
Nuevo método más simple y recomendado: Apple recomienda usar URL para el manejo de archivos y las otras soluciones aquí parecen obsoletas (ver comentarios a continuación). La siguiente es la nueva forma simple de leer y escribir con URL (no olvide manejar los posibles errores de URL):
Swift 5+, 4 y 3.1
fuente
Xcode 8, Swift 3 forma de leer el archivo del paquete de la aplicación:
Aquí hay una conveniente extensión para copiar y pegar
Por ejemplo
Casi siempre quieres una serie de líneas:
fuente
Quiero mostrarte solo la primera parte, que se lee . Así de simple puedes leer:
Swift 3:
Swift 2:
fuente
La forma más sencilla de leer un archivo en Swift> 4.0
fuente
La respuesta actual aceptada anteriormente de Adam tenía algunos errores para mí, pero así es como modifiqué su respuesta e hice que esto funcionara para mí.
fuente
Puede encontrar esta herramienta útil no solo para leer del archivo en Swift sino también para analizar su entrada: https://github.com/shoumikhin/StreamScanner
Simplemente especifique la ruta del archivo y los delimitadores de datos de esta manera:
Espero que esto ayude.
fuente
Tuve que recodificar así:
fuente
En el ejemplo de función, (leer | escribir) DocumentsFromFile (...) tener algunos envoltorios de funciones ciertamente parece tener sentido ya que todo en OSx e iOS parece necesitar tres o cuatro clases principales instanciadas y un montón de propiedades, configuradas, vinculadas, instanciado y configurado, solo para escribir "Hola" a un archivo, en 182 países.
Sin embargo, estos ejemplos no son lo suficientemente completos como para usarlos en un programa real. La función de escritura no informa ningún error al crear o escribir en el archivo. En la lectura, no creo que sea una buena idea devolver un error de que el archivo no existe como la cadena que se supone que contiene los datos que se leyeron. Desearía saber que falló y por qué, a través de algún mecanismo de notificación, como una excepción. Luego, puede escribir un código que muestre cuál es el problema y permite que el usuario lo corrija, o "correctamente" interrumpe el programa en ese punto.
No querrá devolver una cadena con el mensaje "El archivo de error no existe". Entonces, tendría que buscar el error en la cadena de la función de llamada cada vez y manejarlo allí. Posiblemente, tampoco podría saber realmente si la cadena de error se leyó realmente de un archivo real, o si se produjo a partir de su código.
Ni siquiera puede llamar a la lectura de esta manera en swift 2.2 y Xcode 7.3 porque NSString (contentsOfFile ...) arroja una excepción. Es un error de tiempo de compilación si no tiene ningún código para atraparlo y hacer algo con él, como imprimirlo en stdout, o mejor, una ventana emergente de error o stderr. He oído que Apple se está alejando del intento de captura y excepciones, pero va a ser un movimiento largo y no es posible escribir código sin esto. No sé de dónde viene el argumento & error, quizás una versión anterior, pero NSString.writeTo [File | URL] actualmente no tiene un argumento NSError. Se definen así en NSString.h:
Además, el archivo que no existe es solo uno de una serie de problemas potenciales que su programa podría tener al leer un archivo, como un problema de permisos, el tamaño del archivo u otros muchos problemas para los que ni siquiera querría intentar codificar un controlador cada uno de ellos. Es mejor asumir que todo está correcto y atrapar e imprimir, o manejar, una excepción si algo sale mal, además, en este punto, en realidad no tiene otra opción.
Aquí están mis reescrituras:
fuente
Para mi archivo txt funciona de esta manera:
fuente
Para evitar confusiones y agregar facilidad, he creado dos funciones para leer y escribir cadenas en archivos en el directorio de documentos. Aquí están las funciones:
Aquí hay un ejemplo de su uso:
¡Espero que esto ayude!
Versión de Xcode: 6.3.2
fuente
Último código swift3
Puede leer datos del archivo de texto solo use el siguiente código Este es mi archivo de texto
}
Puede usar este código para obtener datos del archivo json de texto en swift3
fuente
Esto funciona con Swift 3.1.1 en Linux:
fuente
escribir en ViewDidLoad
fuente
Las soluciones anteriores responden preguntas, pero en mi caso, eliminar el contenido antiguo del archivo mientras escribía era un problema.
Entonces, creé una pieza de código para escribir en un archivo en el directorio de documentos sin eliminar el contenido anterior. Probablemente necesite un mejor manejo de errores, pero creo que es un buen punto de partida. Swift 4. Uso:
Métodos de ayuda:
fuente
Swift 3.x - 5.x
El mejor ejemplo es crear un local
Logfile
con una extensión.txt
que pueda verse y mostrarse en el"Files App"
fecha y hora actuales como un nombre de archivosolo agregue este código en info.plist habilite estas dos características
y esta función a continuación
fuente
fuente
Xcode 8.3.2 Swift 3.x . Usando NSKeyedArchiver y NSKeyedUnarchiver
Leer archivos de documentos
Escribir archivo en documentos
fuente