2012-01-23 14 views
18

Estoy localizando una aplicación, siguiendo los pasos enumerados here. Lo logré con alrededor de 45 .xib, mientras que solo 4 de ellos me dan este error:Interface Builder no pudo abrir el documento ".xib" porque no existe

"Interface Builder no pudo abrir el documento" .xib "porque no existe."

cuando los muevo de su posición original. Intento moverlos de su posición Project/Classes/Example.xib al localizado en Project/en.lproj/Example.xib.

¿Por qué no se pueden mover estos archivos .xib?

+2

¿los movió usando XCode? o usando Finder? hacer eso en XCode no debería producir ningún error. Parece que lo hizo con Finder, para localizar sus archivos NIB, seleccionarlo en el proyecto, luego en la vista Utilidades> Inspector de archivos, seleccione '+' en la sección de Localizaciones. –

+0

¡De acuerdo! Funcionó para casi todos. Pero todavía hay uno que no funciona. No puedo entender por qué. Simplemente selecciono .xib, abro File Inspector, agrego localización en inglés con el botón "+" y compilo. El mismo error aparece ... – MrSueko

Respuesta

5

Tengo un problema al usar Xcode 5 que podría ser el mismo problema. ibtools está funcionando al azar al generar o escribir cadenas localizadas a/desde archivos xib. Tuve que usar sudo en algunos archivos xib para que funcione. He aquí un ejemplo:

$ibtool --generate-strings-file en.lproj/MyVC.strings en.lproj/MyVC.xib 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>com.apple.ibtool.errors</key> 
<array> 
    <dict> 
     <key>description</key> 
     <string>Interface Builder could not open the document "MyVC.xib" because it does not exist.</string> 
    </dict> 
</array> 
</dict> 
</plist> 

El uso de obras sudo aunque se queja de 'dominios de usuarios serán volátil'

$sudo ibtool --generate-strings-file en.lproj/MyVC.strings en.lproj/MyVC.xib 
2013-10-01 10:04:35.943 Interface Builder Cocoa Touch Tool[1717:303] CFPreferences: user  
home directory at file:///var/root/Library/Application%20Support/iPhone%20Simulator/User/ is unavailable. User domains will be volatile. 
$ 
4

Para mí esto sucedió después de una fusión Git. El archivo del proyecto debe haber cambiado tanto que ahora da todos estos errores. Esos archivos de proyecto sensibles ...

Así que de todos modos, lo que terminó haciendo es sólo la eliminación de los archivos del proyecto (enviarlos a la Papelera) y luego volver a añadirlos al proyecto con un git checkout other_branch path/to/file

Después esto, construir el proyecto ya no arrojó este error.

  • parece que funciona bien también si se quita sólo la referencia y después volver a agregar el archivo al proyecto (sin necesidad de enviarlo a la papelera)
  • Importante Debe eliminar todos los archivos rojos de su Build Phases - Compile Sources de la configuración de su destino. Esos son archivos que XCode cree que aún existen y cree que aún debería intentar compilarse, pero cuando no los encuentra, devuelve este error.
35

Para mí funciona así:

  • selecto objetivo del proyecto
  • eliminar el archivo de la pestaña build phases en copy bundle resources
  • re añadirlo a la pestaña build phases
+0

Esto me acaba de ahorrar horas de trabajo – ngoue

+0

Eliminar el archivo (archivo eliminado o archivo con el nombre anterior después de cambiar el nombre de un archivo) desde la pestaña Crear fases es la solución! ¡Gracias! – septerr

+0

Thx, trabajo para mí –

12

Experimenté el mismo error al ejecutar ibtools en archivos .xib en dos directorios diferentes. Funcionó bien con los archivos en el primer directorio, pero falló en los archivos en el segundo directorio. Si cambié el orden de procesamiento de los directorios, aún falló para el segundo directorio.

Finalmente descubrí que ibtool inicia un proceso demonio ibtoold que no finaliza cuando ibtool termina, y si eliminé ese proceso ya no recibí el error. Aparentemente, el demonio tiene algún estado que impide que ibtool trabaje en otro directorio.

Utilicé pkill ibtoold para matar al demonio.

+3

'killall -9 ibtoold' funcionó mejor para mí. Checkout útil [script] (https://github.com/ole/Storyboard-Strings-Extraction) y [article] (http://oleb.net/blog/2013/02/automating-strings-extraction-from-storyboards -para-localización /). – DanSkeel

Cuestiones relacionadas