Crear File Templates en Xcode (Swift)

portada

1 - Crear un directorio llamado Swift

2 - En Swift, crear un directorio llamado New Class.xctemplate

3 - En el nuevo directorio, crear los archivos:

  • ___FILEBASENAME___.swift: la lógica de la plantilla como tal.
  • TemplateInfo.plist: Metadatos de la plantilla (nombre, descripción, tipo de lenguaje, etc.)
  • TemplateIcon.png: ícono que aparecerá en la pantalla de selección de Xcode. 48x48.
  • TemplateIcon@2x.png: 96x96.

___FILEBASENAME___.swift

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

public class ___FILEBASENAMEASIDENTIFIER___ {
    init(){

    }
}

TemplateInfo.plist

<?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>AllowedTypes</key>
    <array>
        <string>public.swift-source</string>
    </array>
    <key>DefaultCompletionName</key>
    <string>File</string>
    <key>Description</key>
    <string>A new Swift class.</string>
    <key>Kind</key>
    <string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>
    <key>MainTemplateFile</key>
    <string>___FILEBASENAME___.swift</string>
    <key>Summary</key>
    <string>A Swift Class</string>
</dict>
</plist>

4 - Ubicarse en el directorio:

~/Library/Developer/Xcode/Templates/File Templates/

Si el directorio Templates y File Templates no existe, toca crearlos manualmente.

5 - Prácticamente lo único que queda es pegar la carpeta Swift en File Templates, pero si deseas mantener los templates en otro directorio, es posible usar symbolic links, por ejemplo:

ln -s /my_path/xcode_templates/file_templates/Swift ~/Library/Developer/Xcode/Templates/File\ Templates

Referencias:

Asumir que no existen cambios en archivos basados en un patrón en GIT

Por ejemplo, para asumir que no existen cambios en archivos con extensión .iml:

git update-index --assume-unchanged -- $(git ls-files '*.iml')

Directiva para validar igualdad de contraseña (Password Match) en AngularJS

Una sencilla directiva de AngularJS para validar que 2 campos tengan el mismo valor (confirmar contraseñas, emails..)

Leer más..

Cargar imágenes en galería de un emulador de GenyMotion

(testeado en Windows 8.1)

Por defecto GenyMotion no posee imágenes en la galería, ya que en su momento son necesarias para hacer las pruebas, el objetivo es establecer un mecanismo para compartir un directorio con la máquina y posteriormente copiar las imágenes de dicha carpeta a la galería.

1- Si el programa de GenyMotion está corriendo, cerrarlo. Abrir VirtualBox.

2- Seleccionar la máquina virtual del dispositivo móvil y elegir la opción de "Configuración".

paso 2

3- En el menú "Carpetas compartidas", seleccionar "Agregar carpeta compartida" (ícono con el + a la derecha). Si no aparece esta opción hay que actualizar la versión de VirtualBox.

paso 3

4- Elegir el directorio a compartir (en dónde tendrán que estar las imágenes a copiar) y seleccionar la opción de "automontar"

paso 4

5- Abrir GenyMotion y por consiguiente el emulador. Lanzar la app "File Manager". Seleccionar la opción de "Settings"

paso 5

6- General Settings -> Access Mode -> Seleccionar "Root Access Mode". Con esta opción será posible visualizar todos los directorios del sistema de archivos. Es posible que sea necesario reiniciar la app del explorador para visualizar los cambios.

7- Al abrir la app de nuevo, aparecerá el directorio "mnt" -> "shared", en éste aparecerá la carpeta que se ha compartido desde VirtualBox.

8- Para que aparezcan las imágenes en la galería, se tienen que copiar al directorio correspondiente. En 1ra instancia seleccionar las imágenes a copiar.

paso 8

9- Dirigirse nuevamente a la raíz (sin deseleccionar las imágenes) y entrar a la carpeta "sdcard" -> "Pictures". Estando allí, seleccionar el botón para abrir el menú de acciones, al aparecer el dialog, seleccionar la opción de "copy selection here"

paso 9

Con eso será suficiente para que aparezcan las imágenes en la app de galería del sistema.

paso 10

Volley. setImageBitmap no funciona en NetworkImageView

Mi escenario es típico, deseo mostrar una imagen en pantalla, si existe en el almacenamiento del teléfono recuperarla desde allí, sino usar una URL. Para facilitarme la vida implementé el widget NetworkImageView que integra Volley, debería ser algo tan simple como esto.

((NetworkImageView)findViewById(R.id.my_img)).setImageBitmap(miBitmap);

Leer más..