ios xcode swift readfile

Dónde colocar un archivo.txt y leerlo en un proyecto IOS



xcode swift (5)

Quiero poner un archivo .txt en mi proyecto Xcode Swift Iphone. Primero, simplemente lo arrastro y lo suelto de mi escritorio a la carpeta de archivos de soporte del proyecto. ¿No hay una carpeta como en los "activos" de Android, así que puedo colocar mis archivos en cualquier lugar que desee?

El archivo en mi ejemplo se llama README.txt que tiene un montón de líneas y párrafos.

Bastante simple, ahora quiero imprimir el contenido del archivo README.txt en una vista.

¿Cómo hago la función de lectura y qué ruta debo insertar, si mi archivo está en el proyecto /SupportFiles/README.txt?

¡Muchas gracias!


En Swift 3

guard let path = Bundle.main.path(forResource: "README", ofType: "txt") else { return } textView.text = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)


Recomendaría usar NSFileManager y soltar su archivo en cualquier lugar de su proyecto:

if let path = NSBundle.mainBundle().pathForResource(name, ofType: "txt"){ let fm = NSFileManager() let exists = fm.fileExistsAtPath(path) if(exists){ let c = fm.contentsAtPath(path) let cString = NSString(data: c!, encoding: NSUTF8StringEncoding) ret = cString as! String } }


Si define path''s tipo path''s y la pone ! Al final de la línea, no recibirá ninguna advertencia.

let path:String = NSBundle.mainBundle().pathForResource("README", ofType: "txt")! textView.text = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)


Swift 4 (gracias a @ Pierre-Yves Guillemet por el original)

Mientras el archivo esté en su proyecto (y tenga un .txt), esto funcionará (en este ejemplo, asumo que "MyFile.txt" es un archivo que está en mi proyecto):

static func LoadFileAsString() -> () { if let path = Bundle.main.path(forResource: "MyFile", ofType: "txt") { let fm = FileManager() let exists = fm.fileExists(atPath: path) if(exists){ let content = fm.contents(atPath: path) let contentAsString = String(data: content!, encoding: String.Encoding.utf8) } } }


let path = NSBundle.mainBundle().pathForResource("README", ofType: "txt") textView.text = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)

Simplemente suelte el archivo en cualquier lugar en el navegador del proyecto y asegúrese de que esté agregado al objetivo correcto.

Solo para ampliar la respuesta, también puede colocarlos en una carpeta y usar: + pathForResource: ofType: inDirectory:.