2010-10-18 12 views
47

Esto parece una tarea tan básica, pero estoy perplejo.¿Búsqueda de texto a través de todos los archivos .xib en Xcode?

¿Cómo, en Xcode, ejecuta una búsqueda textual (los contenidos XML de) todos los archivos .xib en un proyecto?

Por ejemplo, todos nuestros archivos .xib contienen esta cadena en la segunda línea: com.apple.InterfaceBuilder3.CocoaTouch.XIB. Entonces, creo que al buscar en todos los archivos del proyecto esa cadena devolverá todos los archivos .xib, pero Xcode insiste en "0 ocurrencias". He comprobado dos veces que las Opciones de búsqueda del proyecto se ven correctas.

Me falta algo obvio. (O Xcode está de alguna manera codificado para omitir archivos .xib)

Estoy tratando de encontrar todos los archivos .xib que hacen referencia a una clase en particular (y una búsqueda de texto parece ser la manera más directa).

Gracias!

+0

¿Esto tiene que hacerse en Xcode, o se puede hacer en la terminal? –

+0

Idealmente, me gustaría saber cómo hacerlo Xcode para poder hacer clic en cada línea de resultados y tener el archivo abierto en el panel de edición de Xcode. Si es imposible en Xcode, me gustaría saberlo con seguridad. Si ese es el caso, apreciaría alternativas. –

Respuesta

78

Lo que hago es ejecutar grep en el terminal:

grep -i -r --include=*.xib "TextToFindHere" /PathToSearchHere 

Xcode no parecen tener una opción para buscar archivos xib y mis intentos de conseguir Spotlight para mirarlos no han tenido éxito.

+2

Bingo. No ejecute la búsqueda en Xcode; ejecútelo en su lugar en Terminal.app. Para simplificar las cosas, puede arrastrar el ícono del archivo de la barra de título a Terminal.app y soltarlo para obtener la ruta del archivo, luego simplemente eliminar hasta que esté de regreso en la raíz del proyecto. –

+0

¡Muy útil para mí, gracias! –

+0

Lo he usado pero lo que obtengo es: ** /. DocumentRevisions-V100/PerUID/503/bd/com.apple.documentVersions/14D9CB29-07F2-4670-937F-05188E6D64C6.xib: ** que parece ser una copia de revisión del archivo xib, pero no el archivo xib en sí ... – aneuryzm

9

Aquí está mi comando práctico que nunca me falla. Ejecútelo desde el directorio del proyecto en la Terminal.

buscar. -name "* .xib" -exec grep "texto para buscar" {} \; -print

3

Me doy cuenta de que esto es bastante antiguo, pero me gustaría sugerir a aquellos de ustedes que también codifican otros idiomas en su computadora y eligen usar Sublime Text 2 (lo cual es maravilloso) para hacerlo, solo abra la carpeta de su proyecto iOS en Sublime y use la función buscar todo. Muy rápido, muy confiable.

Esto fue lo que hice para eliminar los recursos de imágenes no utilizados de uno de mis proyectos más grandes.

~ = Happy Coding]

+0

¡Excelente recurso! Gracias por eso – jwarrent

0

Esto funciona si se utiliza como un servicio ....

on run {input, parameters} 

display dialog "XIB Search Text" default answer "" 
set searchtext to text returned of result 

if (length of searchtext) is greater than 0 then 

    tell application "Xcode" to set theProjectPath to (the project directory of front project) 

    tell application "Terminal" 

    set newWin to do script "cd " & theProjectPath & "; " & "rm " & theProjectPath & "/searchXIB.txt 2> /dev/null ; grep -i -r --include=*.xib " & searchtext & " . > searchXIB.txt ; exit" 
    activate 

    repeat while (exists newWin) 
    delay 1 
    end repeat 

    tell application "Xcode" 
    set doc to open theProjectPath & "/searchXIB.txt" 
    activate 
    end tell 

    tell application "System Events" 
    keystroke "f" using {command down} 
    keystroke searchtext 
    end tell 
    end tell 
    end if 
return input 
end run 
+0

Necesita documentar cómo hacer los parámetros principales, obsérvese a sí mismo – ort11

4

que pueden ser tonto, pero utilizando proyector funciona muy bien para mí en este caso.

+0

De hecho, parece que Spotlight estar trabajando ahora. Tal vez fue solucionado en Mountain Lion. – Anna

3

U puede utilizar esta función en su perfil de bash:

function grep_xib { 
    grep -i -r --include=*.xib "$1" . 
} 

A continuación, sólo lo llaman en el terminal "TEXT_TO_FIND grep_xib". Es mas fácil.

Para crear un .bash_profile en su Mac seguir los siguientes pasos:

  • Poner en marcha la Terminal
  • Tipo "cd ~ /" para ir a la carpeta de inicio
  • Tipo ".bash_profile toque" a crea tu nuevo archivo
  • Editar .bash_profile con su editor favorito (o simplemente puede escribir "abrir .bash_profile -e" para abrirlo en TextEdit.
  • Tipo ".bash_profile" para recargar .bash_profile y actualizar las funciones que añada.
0

Abra la carpeta del proyecto en texto sublime y busque en todos los archivos, muy fácil y conveniente.

0

Tuve el mismo problema y lo resolví utilizando algunos comandos de la consola.

1) Abrir terminal en su Mac

2) Ejecutar "grep -i -r --include = *. Xib "searchText comando"/ tu/proyecto/ruta"

Será busca en la ruta "/ your/project/path" e imprimirá la ruta completa de todos los archivos xib que usan el "texto de búsqueda".

Espero que esto te ayude!

1

Puede simplemente cambiar el alcance de búsqueda en Xcode definiendo un nuevo ámbito. Vaya al panel de búsqueda y debajo de la barra de búsqueda hay un ícono que tiene tres puntos (probablemente de manera predeterminada en "En el espacio de trabajo"). Haga clic en eso y en BÚSQUEDA DE ÁMBITOS, haga clic en "Nuevo alcance". Defínalo como "Nombre"/"finaliza con"/".xib".

+0

Esta es la mejor respuesta ya que aborda la búsqueda desde dentro de Xcode. Tenga en cuenta que hay una opción de alcance de búsqueda para usar una extensión de archivo específica y establecer esto en .XIB funciona bien. –

Cuestiones relacionadas