2011-06-07 10 views
37

Tengo un archivo paylines.txt añadido dentro de la carpeta con el nombre TextFiles que reside dentro de la carpeta Resources de mi proyecto en Xcode iOS.acceso a un archivo usando [NSBundle mainBundle] pathForResource: OfType: elDirectorio:

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); 

La impresora de código:

2011-06-07 14:47:16.251 slots2[708:207] 

the string (null) 

Respuesta

8

así que descubrí el error que estaba cometiendo estaba añadiendo un grupo para el proyecto en lugar de añadir el directorio real para más instructions

+1

Sí, como se dice en el enlace: en la ventana emergente, asegúrese de seleccionar "Crear referencias de carpeta para cualquier carpeta agregada" en lugar de "Crear grupos para cualquier carpeta agregada" – AlvaroSantisteban

161

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

Ir a: Target -> "Build Phases" -> "copia" de haces de Recursos A continuación, agregue ese archivo en particular aquí. Si ese archivo ya está agregado, elimínelo y vuelva a agregarlo.

limpie el proyecto y EJECUTAR. Funciona. :)

+1

Para mí, el archivo estaba allí, así que lo eliminé y lo agregué nuevamente, lo limpié y ¡funcionó! –

+0

En mi caso, de alguna manera la casilla de verificación 'Añadir a destinos' para mi aplicación no estaba marcada; no me di cuenta hasta que eliminé el archivo y luego lo agregué nuevamente. Oops! – geerlingguy

+2

Enfatizando los comentarios de los demás y otras respuestas similares: a veces lo haces bien y todavía no funciona. Si es así, asegúrese de eliminar el archivo del paquete en ese panel del Proyecto (BuildPhases/Bundle Resources) y luego vuelva a agregarlo. Y luego Proyecto> Limpiar. ¡Eso finalmente funcionó para mí! –

8

Prueba de esto, su trabajo para mí.

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

para el simulador de

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

Ir a "Target" -> "Build Phases", seleccione su destino, seleccione la pestaña “Build Phases”, haga clic en “Añadir fase de construcción”, y seleccione “ Agregar copiar archivos ". Cambie el destino a "Directorio de productos". Arrastra tu archivo a la sección "Agregar archivos".

+0

si también pudiera decirme lo que hice para eliminar este archivo de la lista de archivos de copia, lo agradecería –

0

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

Esto funcionó para mí.

1

En el caso de Mac OS X,

Ir a Objetivos -> Construir Fases clic + copiar los nuevos archivos de generación fases Seleccionar directorio de productos y soltar el archivo allí.

Limpiar y ejecutar el proyecto.

10

Cuando arrastro archivos, el cuadro "Agregar a destinos" parece estar desmarcado de manera predeterminada. Si lo dejo sin marcar, entonces tengo el problema descrito. Solucionarlo borrando los archivos y luego arrastrándolos nuevamente, pero asegurándose de marcar "Agregar a destinos". enter image description here

2

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

enter image description here

1

Después de seguir la respuesta de @Neelam Verma respuesta o @ de Dawid, que tiene la misma finalidad que la respuesta de @Neelam Verma, siendo respuesta que @ Dawid diferencia comienza con el arrastrar y soltar el archivo en el Xcode proyecto y la respuesta de @Neelam Verma comienza con un archivo que 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 estaba en un grupo anidado en el proyecto de Xcode que esta era la causa, así que moví el archivo de video a la raíz de mi proyecto de Xcode, todavía no tuve 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 archivo: testVid1.MP4, cambiando el nombre del archivo de vídeo a testVid1.mp4 fijo mi problema, por lo que, al menos, el argumento ofType cadena de mayúsculas y minúsculas.

Cuestiones relacionadas