accediendo a un file usando pathForResource: ofType: inDirectory:

Tengo un file paylines.txt agregado dentro de la carpeta llamada TextFiles que se encuentra dentro de la carpeta Resources de mi proyecto iOS en Xcode.

Este es el código que uso para acceder al file:

 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"paylines" ofType:@"txt" inDirectory:@"TextFiles"]; NSLog(@"\n\nthe string %@",filePath); 

El código imprime:

 2011-06-07 14:47:16.251 slots2[708:207] the string (null) 

También estaba teniendo el mismo problema. La solución que encontré es (en xcode 4.x):

Vaya a: Target -> "Build Phases" -> "copy bundle Resources" Luego agregue ese file en particular aquí. Si ese file ya está agregado, bórrelo y agréguelo nuevamente.

limpiar el proyecto y ejecutar. Funciona. 🙂

Cuando arrastro files, el cuadro "Agregar a los destinos" parece no estar marcado de manera pnetworkingeterminada. Si lo dejo sin marcar, entonces tengo el problema descrito. Arreglarlo borrando los files y arrastrándolos nuevamente, pero asegurándose de marcar "Añadir a los destinos". introduzca la descripción de la imagen aquí

Bueno, descubrí el error que estaba cometiendo. Estaba agregando un grupo al proyecto en lugar de agregar un directory real para get más instrucciones.

Prueba esto, funciona para mí.

 NSString *str=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"paylines.txt"]; 

Para el simulador

 NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:@"paylines" withExtension:@".txt"]; 

Todo lo que necesita hacer es asegurarse de que la checkbox que se muestra a continuación está marcada.

introduzca la descripción de la imagen aquí

Vaya a "Objetivo" -> "Fases de compilation", select su objective, select la pestaña "Fases de compilation", click "Agregar fase de compilation" y select "Agregar files de copy". Cambie el destino a "Directorio de productos". Arrastre su file a la sección "Agregar files".

En el caso de Mac OSX,

Vaya a Destinos -> Fases de compilation, click + para copyr nuevas fases de compilation de files Seleccione el directory de productos y suelte el file allí.

Limpia y ejecuta el proyecto.

Seleccione Proyecto / Carpeta específica -> Clic derecho -> Agregar files al proyecto -> Seleccione el file que desea agregar.

Esto funcionó para mí.

¿Estás intentando hacer esto dentro de un XCTest y estás a punto de destruir tu computadora portátil? Este es el tema para usted: ¿Por qué no se pueden codificar dentro de las testings unitarias los resources de package?

Después de seguir la respuesta de @Neelam Verma o la respuesta de @ dawid, que tiene el mismo resultado final que la respuesta de @Neelam Verma, la diferencia es que la respuesta de @ dawid comienza con el drag and drop del file en el proyecto Xcode y la respuesta de @Neelam Verma comienza con un file ya forma parte del proyecto Xcode, todavía no pude get NSBundle.mainBundle().pathForResource("file-title", ofType:"type") para encontrar mi file de video.

Pensé que tal vez porque tenía mi file en un grupo nested en el proyecto Xcode que esta era la causa, así que moví el file de video a la raíz de mi proyecto Xcode, aún sin suerte, este era mi código:

  guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else { print("Invalid video path") return } 

Originalmente, este era el nombre de mi file: testVid1.MP4 , cambiar el nombre del file de video a testVid1.mp4 solucionó mi problema, por lo que al less el argumento de cadena ofType mayúsculas y minúsculas.