objective-c ios xcode filepath nsbundle

objective c - acceder a un archivo usando[NSBundle mainBundle] pathForResource: ofType: inDirectory:



objective-c ios (10)

¿Está intentando hacer esto dentro de un XCTest y a punto de destrozar su computadora portátil? Este es el hilo para usted: ¿ por qué no puede el código dentro de las pruebas unitarias encontrar recursos de paquete?

Tengo un archivo paylines.txt agregado dentro de la carpeta llamada TextFiles que reside dentro de la carpeta de Resources de mi proyecto de iOS en Xcode.

Este es el código que utilizo para acceder al archivo:

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

El código se imprime:

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


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


Cuando arrastro archivos, el cuadro "Agregar a objetivos" parece que no está marcado de forma predeterminada. Si lo dejo sin marcar, entonces tengo el problema descrito. Repárelo eliminando los archivos y luego arrastrándolos de nuevo pero asegurándose de marcar "Agregar a objetivos".


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 arrastrar y soltar el archivo en el proyecto Xcode y la respuesta de @Neelam Verma comienza con El archivo ya forma parte del proyecto Xcode, todavía no pude obtener NSBundle.mainBundle().pathForResource("file-title", ofType:"type") para encontrar mi archivo de video.

Pensé que tal vez porque tenía mi archivo en un grupo anidado en el proyecto de Xcode, esa fue la causa, así que moví el archivo de video a la raíz de mi proyecto de Xcode, aún sin suerte, este fue 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 archivo: testVid1.MP4 , al cambiar el nombre del archivo de video a testVid1.mp4 solucionó mi problema, por lo que, al menos, el argumento de cadena ofType mayúsculas y minúsculas.


En el caso de Mac OSX,

Vaya a Objetivos -> Fases de compilación, haga clic en + para Copiar nuevos archivos. Fases de compilación Seleccione el directorio del producto y suelte el archivo allí.

Limpia y ejecuta el proyecto.


Prueba esto, está funcionando para mí.

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

Para simulador

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


Seleccione Proyecto / Carpeta específica -> Clic derecho -> Agregar archivos a proyecto -> Seleccione el archivo que desea agregar.

Esto funcionó para mí.


Todo lo que necesita hacer es asegurarse de que la casilla de verificación que se muestra a continuación esté marcada.


Vaya a "Target" -> "Build Phases", seleccione su objetivo, seleccione la pestaña "Build Phases", haga clic en "Add Build Phase", y seleccione "Add Copy Files". Cambie el destino a "Directorio de productos". Arrastre su archivo a la sección "Agregar archivos".


Yo 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 archivo en particular aquí. Si ese archivo ya está agregado, elimínelo y agréguelo nuevamente.

limpiar el proyecto y ejecutar. Funciona. :)