2010-12-27 18 views
10

Esto me está volviendo loco ya que no puedo entender qué está pasando en el mundo. Cargué archivos de tu paquete principal todo el tiempo, archivos xml, archivos html, etc. Pero, ahora estoy tratando de obtener el contenido de un archivo javascript, pero nunca lo puedo encontrar. Estoy usando:¿No se puede encontrar el archivo .js en mi mainBundle?

NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]]; 
    if (jsData) { 
     NSLog(@"%@", jsData); 
    } else { 
     NSLog(@"Can't find file"); 
     return; 
    } 

Incluso el control de la [NSBundle mainBundle] pathForResource [: @ OfType "global": @ "js"] cadena devuelve nulo.

Mi archivo globaly.js está en mi carpeta de Recursos, la ubicación exacta donde mis otros archivos son la ubicación que funciona totalmente bien utilizando el método anterior.

¿Por qué no puede encontrar mi archivo js?

+0

Si el guión es "activity.js", ¿por qué estás buscando "global.js"? – Chuck

+0

¿Es el nombre del archivo global.js o activity.js? –

+0

¿Está intentando cargar un archivo llamado global.js o activity.js? – tidwall

Respuesta

5

En lo que se acordó de Xcode no le gustan los archivos con la extensión * .js. Quiero decir que no lo agregó al paquete de aplicaciones. Simplemente cambie el nombre de su archivo a * .txt y todo estará bien.

Y la respuesta correcta será: Su necesidad de mover sus archivos js desde la fuente de compilación Orientar fase a Copiar recursos de paquete. Debido a que Xcode piensa que los archivos js son archivos fuente y que deberían compilarse en su lugar, deben agregarse como recursos.

+1

Tenías razón, aparentemente odia los archivos .js. Convertirlo en un archivo .txt funcionó bien, no estoy seguro de por qué no pensé en eso. –

+6

No es una cuestión de Xcode "no me gusta" algunos tipos de archivos, y el desarrollador NO necesita cambiarles el nombre para tener una extensión "txt". –

+2

Mover js a Copy Bundle Resources funcionó para mí. Gracias – z22

0

a veces xCode no se da cuenta de que hay un archivo en su proyecto y no lo hace todo correctamente. intente eliminar el archivo .js y agregarlo nuevamente.

Además, parece que usted está mencionando 2 nombres de archivo diferentes, activity.js y global.js

+0

Sí, fue solo un error de tipeo en esta publicación. –

14

De manera predeterminada, Xcode puede tratar los archivos con la extensión "js" como archivos de origen y agregarlos a su fase de compilación de compilar fuentes en lugar de su fase de compilación de Copy Bundle Resources.

Simplemente mueva sus archivos "js" a la fase de compilación Copy Bundle Resources y se copiarán en el paquete de la aplicación. Que estén en un grupo llamado Recursos en la jerarquía del proyecto es irrelevante; eso es solo una herramienta de organización, no tiene ningún significado dentro de Xcode. Es fases de construcción bajo los objetivos que realmente hacen el trabajo de armar un producto.

+0

Mover js a Copy Bundle Resources funcionó para mí. ¿Puedes explicar por qué funcionó la copia? – z22

2

No es que al Xcode no le gusten los archivos .js. Los considera de otra manera, no hubiéramos usado archivos .js para la ejecución de JavaScript en webview.

Es solo que tenemos que agregar el archivo .js en la fase de compilación del recurso Copiar paquete debajo de los objetivos. Simplemente arrastre su archivo .js a la fase de compilación de recursos del paquete de copia. Por lo tanto, Xcode considerará este archivo ya que ahora está en el paquete de fase bulid. Creo que si no hacemos el paso anterior, recibimos una advertencia sobre la creación del código. No recuerdo exactamente la advertencia, pero solo decía que Xcode no puede reconocer el archivo .js.

Una vez que el archivo se añade a la fase de construcción, se puede utilizar NSData * jsData = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @ OfType "global": @ "js"]];

1

Tuve el mismo problema.

que lleva a cabo los pasos siguientes para resolver este problema:

  1. Busque el archivo js en la sección "compilar código fuente" en la configuración de generación y sacarlo de allí.

  2. Busque la sección "copiar el recurso del paquete" y agregue el archivo js allí.

Los 2 pasos anteriores resuelven mi problema ..

Cuestiones relacionadas