Planeta Cocoa

Blogs de Cocoa, Objective C y Cocoa Touch en Español

20 de mayo del 2012

NSCodeCenter

Como mantener un TabBar permanente

Antes de nada saludos a la comunidad, estoy empezando con esto de la programación de aplicaciones, y estoy intentando refinar la interface de mi aplicación. La tengo hecha en vistas simples con botones y ahora estoy probando con la Tabbar.

Vereís tengo una aplicación basada en un TabBar, este Tabbar tiene dos botones, en una de las vistas que gestiona, he puesto unos botones y los he enlazado con una vista simple, donde tengo varios Text Field y un label.

Y tengo varios problemas el 1º es que no se como hacer para que la TabBar esté siempre visible en todas las vistas, el 2º si pulso el 2º boton del Tabbar y vuelvo al 1º, esté se queda en la vista en el que lo deje y yo quiero que vuelva al principio.

Sin más un cordial saludo a todos.

por Alvaros_g el 20 de mayo del 2012 a las 17:40

Como paso data de un viewcontroller a un VC de un tab especifico? (con storyboard)

Tengo un proyecto usando storyboard, un viewcontroller y en el IBAction de un boton voy hacia un tabbarcontroller, necesito pasar un string del VC a los tabs. No puedo hacerlo directamente, porque se puede darle 'Identifier' al segue hacia el tabbarcontroller, pero no a los tabs directamente. De que forma podria pasar la data al VC de cada tab?

por victor28 el 20 de mayo del 2012 a las 09:07

¿Cuál es la mejor forma de verificar si el contenido de un NSString es realmente una palabra válida?

Buenas a todos.

La pregunta es un poco larga, pero voy a intentar desarrollar lo que he probado hasta ahora. La tarea consiste en validar contra una lista/diccionario de palabras (MUY grande, aprox. 130k) si el NSString contiene una palabra válida de al menos 3 letras. La validación de la palabra se realiza mediante un gesto swipe sobre la pantalla. De menos a más elaborado, esto es lo que he probado.

  1. Cargar la lista de palabras "a pelo" en un NSArray y mediante el método containsObject hacer la verificación. Ventajas: es muy rápido. Inconvenientes: consume mucha memoria. Evidente.
  2. Utilizar la clase UITextChecker para validar contra el diccionario del teléfono la palabra de mi NSString. Ventaja: muy rápido. Inconveniente: me hace validaciones de palabras que no lo son...
  3. Utilizar una base de datos SQlite y hacer la query con el NSString. Ventaja: mínimo consumo de memoria. Inconveniente: me congela el UI desde que inicio la validación hasta que devuelve el resultado de la query. Esto lo he solucionado haciendo una query parcial cuando tengo las 2 primeras letras de la palabra (las letras se introducen secuencialmente) cargando en otro thread un NSArray con el resultado de las palabras que empiezan con esas dos letras. Funciona, pero a veces tengo problemas de timing, no le da tiempo al array a llenarse, porque hago otras cosillas mientras...
  4. Básicamente lo mismo que el anterior pero con Core Data. En mi caso concreto con la lista de 130k palabras, Core Data es más lento que la base de datos SQlite.

Creo que la mejor opción sería la 2, pero no he conseguido que funcione correctamente el UITextChecker. ¿Alguien tiene experiencia con esta clase o se le ocurre alguna otra optimización para una lista de palabras tan grande?

Perdón por un primer post tan "plasta" y ¡gracias!

por Sjors el 20 de mayo del 2012 a las 00:44

18 de mayo del 2012

NSCodeCenter

Variables static Objective c.

Hola,

Cual es la equivalencia en objective C a este código en java (Variables static)

class Prueba {
private static Personaje person;

public Prueba() {
    super();

}
public Prueba(Personaje person) {
    setPerson(person);
}

public static Personaje getPerson() {
    return person;
}
private static void setPerson(Personaje person) {
    Prueba.person = person;
}

}

class Personaje {
private String nombre;
private String apell;
public String getNombre() {
    return nombre;
}
public void setNombre(String nombre) {
    this.nombre = nombre;
}
public String getApell() {
    return apell;
}
public void setApell(String apell) {
    this.apell = apell;
}

}

Gracias y Saludos

por racso el 18 de mayo del 2012 a las 14:40

iAd con geolocalización

Voy a publicar mi primera aplicación en la iTunes Store, pero hay una cosa que quiero saber antes de nada.
Según he leído, no puedes introducir tu propia publicidad en la aplicación, hay que hacerlo a través de iAd.
Además, al meter el banner, es como en Google AdSense, tu lo metes, y luego Apple gestiona la publicidad que se mete.
Mi pregunta es, si hago mi Banner de publicidad con el iAd-Producer, como lo envío a Apple para que lo añada a su "lista de banners"?
Y una vez enviado, ¿se puede elegir que solo salga a personas localizadas en un sitio determinado? Por ejemplo, el banner que quiero hacer es de la empresa dónde trabajo, localizada en Zaragoza. ¿Puedo hacerlo para que solo se muestre a personas que se encuentren en Zaragoza o Aragón? En el caso de no poder hacerlo por provincias o comunidades, ¿Se puede por países?

Muchas gracias.

por Sexto el 18 de mayo del 2012 a las 11:26

Duda iOS Developer Enterprise Program

Según he leído por aquí:

''...la licencia enterprise no deverias comprarla tu (la empresa desarolladora), sino la empresa a la cual le venderás el desarrollo (cliente) y posee los iDevices en donde se instalarán las aplicaciones...''

http://www.nscodecenter.com/preguntas/7477/duda-cuenta-developer-y-empresa

Tengo la misma duda, estoy en una empresa de desarrollo , y queremos dar soporte de nuestra aplicación de escritorio, ahora, para móvil, entonces, nosotros disponemos de una serie de clientes, pero no veo necesario, incluso veo excesivo o ilógico, que cada cliente deba abrir una cuenta de desarrollador.

  • Entonces la opción más normal, sería abrir la cuenta iOS Developer Enterprise Program para que nosotros podamos desarrollar la aplicación, y cuando sea el momento, pasarela a nuestros clientes; no?

  • O realmente debería crear una cuenta estándar de iOS Developer Program?

por mserra el 18 de mayo del 2012 a las 09:37

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

De compras por El Tesoro de Medellín

Menudo Tesoro Tras terminar mi visita al Museo Informático Botero, seguí camino hacia un centro comercial próximo al hotel, llamado El Tesoro. Es sencillamente el centro comercial más bonito que he visto, con magníficas vistas al valle sobre el cual se extiende la ciudad, y un enorme cuidado con los detalles. Por ejemplo, hay abundantes [...]

por frr149 el 18 de mayo del 2012 a las 08:51

NSCodeCenter

Decode HTML String para parseo JSON

Hola, estoy intentando hacer un parseo de JSON, pero me encuentro con que el texto que recibo dentro de uno de los "KEY", es con formato HTML.

Esto es lo que hago, es decir, el resultado es un string e intento hacer el parseo como siempre, el problema es que me devuelve nil, porque como os decia en uno de los keys me viene HTML y creo que por eso no devuelve nada.

SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary *datos_array = [parser objectWithString:RespuestasResponse error:nil];
NSArray *tabla;
tabla = [datos_array objectForKey:@"Table"];
NSDictionary *item;

ALguien sabe como podria hacer un decode de ese NSString para el posterior parseo?, este es un ejemplo del JSOn:

{"Table" : [{"id" : "2003895","cuando" : "11/05/2012.Viernes 14:08:00 Hace 7 Dias2 Horas y 3 Minutos","quien" : "Martinez, Maria Paz","texto" : "< font face=" MS Sans Serif" size=2>Al final lo hemos recibido. Jes&u acute;s te lo envio por valija < br>Saludos< / font>"},....

Pego intros en el Json para que veáis bien el HTML. Gracias

por jlillop el 18 de mayo del 2012 a las 08:23

TouchUpinside y TouchDown

hola a todos estoy tratando de hacer algo simple. Cuando pulso un botón cambio 5 imágenes. Y cuando las suelto pos vuelven a a su estado normal. //touchupinside -(IBAction)botones:(id)sender{ NSLog(@"pulso"); imagen1.image=[UIImage imageNamed:@"globitosexA.png"];
imagen2.image=[UIImage imageNamed:@"globitosexA.png"];
imagen3.image=[UIImage imageNamed:@"globitosexA.png"];
imagen4.image=[UIImage imageNamed:@"globitosexA.png"];
imagen5.image=[UIImage imageNamed:@"globitosexA.png"];
} //touchDown
-(IBAction)botones2:(id)sender{ NSLog(@"Suelto"); imagen1.image=[UIImage imageNamed:@"globitosex.png"]; imagen2.image=[UIImage imageNamed:@"globitosex.png"];
imagen3.image=[UIImage imageNamed:@"globitosex.png"];
imagen4.image=[UIImage imageNamed:@"globitosex.png"];
imagen5.image=[UIImage imageNamed:@"globitosex.png"];
}

Y lo que me hace es lo siguiente: Cuando pulso cambian las imágenes pero solo cambian si lo mantengo pulsado.Si presióno en plan "click" no me cabían. Alguien me podría decir que evento tengo que usar? o algún consejo?.

gracias =)

por daniii3 el 18 de mayo del 2012 a las 08:13

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Vintage Computing en Colombia: Museo Informático Botero, Medellín

El Arte de Botero expresada también en Informática Vintage Hoy al terminar el día de curso de programación iOS en Medellín, mi padawan Alexander me llevó en el troncomóvil al Museo Informático Botero, donde se guardan verdaderas maravillas del “retrocomputing”. Es la colección personal de Gustavo Botero, persona interesantísima con quién estuve “comiendo” (cena en colombiano) la [...]

por frr149 el 18 de mayo del 2012 a las 03:44

17 de mayo del 2012

NSCodeCenter

sobre diferentes idiomas en xcode y Itunesconnect

Hola. Tengo la app esperando ser aprobada (Waiting For Review) y me he dado cuenta que en xcode no definí ningún idioma, sencillamente dejé el que venía por defecto (english) aunque todo el texto que contiene la app no está en inglés.

El caso es que cuando rellené el formulario de Apple puse que la aplicación estaba en Spanish ¿Puedo tener algún problema cuando se publique? Lo digo por que parece ser que todavía me deja cambiar el idioma en iTunesConnect.

Saludos y gracias.

por Javier el 17 de mayo del 2012 a las 20:25

Defino un área para hacer una captura de pantalla pero hace la captura otra cosa

Buenas, tengo un problemilla. Creo que no termino de comprender bien CGRectMake. O estoy haciendo algo mal sin darme cuenta.

Tengo un botón en mi aplicación que al pulsarlo hace una captura de pantalla y lo guarda en mi biblioteca de imágenes. Hasta ahí todo perfecto.

CGRect rect = [keyWindow bounds];
 UIGraphicsBeginImageContextWithOptions(rect.size,NO,0.0f);


Ahora me gustaría que capturara un determinado aréa de ésta. He mirado por ahí en foros y encontré un ejemplo para delimitar el área.

CGRect rect = CGRectMake(x,y,800,600);
UIGraphicsBeginImageContextWithOptions(rect.size,YES,5.0f);


Donde los valores de x y de y vienen a ser la posición desde dónde comienzo a definir el área. Es decir, si yo dejo estos valores como (0,0,800,600), debería trazarme un área de 800 x 600 desde la esquina superior izquierda. Creo yo.

Pues no. Hace lo que quiere.

De ahí que piense que mi error es que no entiendo bien es la segunda línea de código. La única diferencia que he encontrado modificando los valores de la segunda línea, es que si modifico el valor 5.0f y lo pongo más pequeño la imagen me pierde calidad.

He estado mirando en foros por ahí, pero la mayoría de los ejemplos son complejos y lo que hago es perderme más todavía.

Añado algo de información más. Estoy haciendo este ejemplo en un Ipad I y la configuración es horizontal. Quizás esto pueda influir a la hora de las coordenadas, que las siga tomando como si estuviera en posición vertical.

Alguien sabe del tema y me puede echar una mano. Se lo agradezco.

por eneakao el 17 de mayo del 2012 a las 18:54

¿Cómo introducir un UIScrollView dentro de un UITableViewCell?

Hola,

estoy intentando hacer un pasador de imágenes paginado (con un UIScrollView y un UIPageControl) y que éste se muestre en un UITableView en la que además de las imágenes se mostrará otro tipo de información (por ello he elegido UITableView ya que me permite alinear de forma cómoda el contenido).

Por ahora me he creado una clase que extiende de UITableViewCell y que contiene un scroll y el page control, pero a partir de aquí me surgen dudas, ¿dónde debo gestionar los eventos del scroll en mi clase que extiende de cell o en el ViewController? ¿Quién debe ser el delegate?

¿Alguien ha hecho ésto antes y tiene alguna idea de por dónde empezar?

Un saludo y muchas gracias.

por torhector2 el 17 de mayo del 2012 a las 18:07

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Vuelta al mundo de los vivos en Medellín

Curso de programación iPhone & iPad en Medellín   Hoy  llegamos a la mitad del curso de programación iPhone en Medellín del Big Nerd Ranch. Aprovecho para retomar mis actividades blogueras, tras una pausa generada por una gripe bogotana que me tuvo convertido en un [NSZombie zombieWithFever]. Poco a poco iré actualizando todo. Ayer salí [...]

por frr149 el 17 de mayo del 2012 a las 16:37

NSCodeCenter

Problema al crear IPA en modo distribucion

Buenas ya hice todos los pasos para poder crear el IPA de mi aplicativo, agregue todos los certificados que se deben tener, pero al momento de compilar me sale este warning:

Application failed codesign verification. The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate. (-19011)

El cual no influye al momento de generar el IPA, pero desearía poder corregirlo, gracias.

por Dunkelheit el 17 de mayo del 2012 a las 15:18

Freniche.com: iPhone, Java, Macs, Linux…

Enyo FAQ en Español

Logo de Enyo

Logo de Enyo

Una de las mejores cosas que tiene el escribir en un blog, es que algunas personas dediquen parte de su tiempo a leer tus desvaríos. Si encima te dicen algo, ya sea por Twitter, en persona, o mandándote un correo es una sensación muy especial. Y hay veces en las que te piden que les ayudes con algo, porque piensan que eres un experto en el tema. Palabras mayores, porque yo toco muchos campos, y de algunos voy sabiendo algo, pero de ahí a considerarme experto…

El caso es que Nicolás me escribió desde Argentina. Está interesado en el Framework Enyo y al parecer leyó mi post Aprendiendo a aprender Informática (y JavaScript), tiene una TouchPad y quiere desarrollar para webOS. Pero claro, está la barrera del idioma: la documentación de Enyo es muy escasa, y está toda en Inglés. No existe documentación en Español, y creo que en España casi que nos conocemos personalmente los dos o tres locos que hacemos Apps para la TouchPad (te estoy mirando a tí, Daniel :-) ).

Yo tengo ganas de seguir activamente con Enyo, aunque en los últimos meses he estado programando principalmente para iOS / Objective C. Pero quiero profundizar en JavaScript y CSS3, y disponer de una herramienta (Aplicaciones HTML5) que se ejecutan en muchas plataformas, por no decir en todas. Además, todo el movimiento que está llevando hacia Open webOS 1.0 y Enyo 2 me resulta muy interesante.

Respondo las preguntas de Nicolás, que es lo que me ha llevado a escribir esto:

1. ¿Que necesito para programar en webOS? ¿Conocimientos en que lenguaje debo tener?

Para programar en webOS se usa el malllamado HTML5, ya que webOS se basa en los estándares de las aplicaciones web. Digo malllamado porque realmente HTML no escribes para nada: es todo CSS3 y JavaScript. Luego lo principal es aprender el lenguaje JavaScript. Para eso, se pueden seguir las instrucciones del post antes mencionado.

2. ¿Qué IDE se utiliza?

Una App Enyo es un conjunto de ficheros de texto JavaScript, las hojas de estilo CSS, algún fichero de configuración y un index.html. Además de los recursos que utilices (sonidos, imágenes, etc.). Todo ello en una estructura concreta de carpetas. Por ello, realmente puedes usar el IDE que te resulte más sencillo para editar JavaScript.

Si usara una máquina Windows, creo que mi opción sería NotePad++, que es Software Libre, es gratis y es una pequeña maravilla. Al final vas a estar escribiendo código en varios ficheros, luego cualquier editor con “pestañas” sirve. En mi Mac, primero lo intenté con Aptana Studio, que es una versión adaptada de Eclipse para trabajar con HTML5. Incluso había un plugin para hacer Apps webOS, pero por desgracia usaba Mojo (el framework que se usa para los teléfonos de Palm, que es más antiguo que Enyo y con el que no he trabajado). Pero fallaba mucho, y era muy pesado.

Según avancé, me di cuenta de que Safari (o Chrome), cualquier navegador basado en WebKit puede depurar una App Enyo, ya que activas el modo desarrollo y dispones de un inspector que es una maravilla. Desde el inspector puedes establecer puntos de ruptura y depurar, ver el valor de las variables, consultar qué hay almacenado en Local Storage, o cambiar el CSS en el navegador hasta que tenga el aspecto que quieres, directamente, sin recargar ni grabar. Obviamente todo esto se puede hacer también con Firefox, pero dado que webOS se basa en WebKit, me pareció más adecuado.

Modo Desarrollo de Safari

Modo Desarrollo de Safari

Así que en el Mac terminé usando DashBoard (el editor que se usa para crear los widgets del Mac, que son HTML5 por cierto). Aunque podía haber usado vi, o cualquier otro. Realmente lo importante es tener un buen editor de textos con resalte de sintaxis. No vas a tener “proyectos”, sino que vas a trabajar directamente sobre las carpetas y ficheros que uses. Y, claro, estarás usando algún sistema de control de versiones, ¿no? :-D

3. ¿Que es Ares?

Ares es un IDE que corre en el navegador. Es decir, uno inicia sesión en ARES y desde ahí puedes crear una App, editar el código fuente. Incluso puedes depurarla. Problema: que Ares 1 funciona con Mojo, no con Enyo. Luego no puedes hacer aplicaciones Enyo con Ares 1. Pero ya están trabajando en Ares 2, que está en GitHub, y aunque no funcione demasiado bien de momento, promete bastante. En cualquier caso, de momento usaría un editor de texto para hacer las Apps, como he comentado antes.

Ares

Ares

4. ¿Desde Ares se pueden crear aplicaciones? ¿Cómo se compilan o como se las lleva a la tableta?

Sí, desde Ares en teoría se podrá depurar en el dispositivo. Hoy en día, para pasar una App a tu touchpad debes primero ponerlo en modo de desarrollo, que es tan sencillo como buscar la cadena “webOS20090606″. Te aparecerá un icono de una App llamado “Developer Mode”. Lo pulsas, activas el modo de desarrollo y con las herramientas de la línea de comandos que vienen con el SDK de la TouchPad puedes instalar una App así:

palm-install com.femtocoders.feedreader_1.0.0_all.ipk

Obviamente, antes necesitas empaquetar la App con palm-package. Toda la información sobre estas herramientas está en el SDK de webOS (nota: si vas a hacer Apps HTML5, necesitas el SDK, el PDK es para hacer Apps que corren código nativo y se escriben en C++, como los juegos)

5. ¿Que es Enyo?

Enyo es el framework que se usa para hacer Apps HTML5 en webOS. Incluye a muchos otros frameworks JavaScript, y te permite acceder al hardware de la TouchPad (al GPS, por ejemplo). Con webOS venía Enyo 1, que ahora ya es Software Libre. Pero Enyo 1 estaba muy influenciado por la TouchPad, su licencia era para usarlo sólo con webOS y estaba basado en WebKit. Con Enyo 2 se intenta disponer de un framework más genérico para cualquier dispositivo móvil (o de escritorio) que soporte HTML5, y pensado desde el minuto uno para ser Software Libre.

Podemos bajar ambas versiones (Enyo 1 y Enyo 2) de la página de descargas de Enyo. Han creado un tutorial para Enyo 2 y hay un Playground donde podemos editar y probar el código de Enyo directamente en el navegador.

6. Las aplicaciones creadas en Enyo son multiplataforma?

Sí, las creadas con Enyo 1 se prueban y depuran en el navegador de escritorio. Luego ¡tienen que ser multiplataforma!. Pero con Enyo 1 se hacía referencia al hardware de la TouchPad (ver si hay conexión WiFi, o consultar al GPS, etc.). Con Enyo 2 las Apps creadas van a ser aún más multiplataforma si cabe. Luego es una buena opción para crear el interfaz y el esqueleto de tu App HTML5. Y luego, por supuesto, puedes añadir los frameworks JS que te apetezcan, que para eso todo es JS.

Dejo aquí la respuesta y espero que esta FAQ le sirva a alguien. Si hay dudas, planteadlas en los comentarios e iré actualizando este post. Y, claro, siempre hay que leerse las FAQs oficiales de Palm sobre Enyo.

Keep coding!

por dfreniche el 17 de mayo del 2012 a las 08:51

NSCodeCenter

Cómo manejar múltiples conexiones?

Si en una aplicación tengo varias conexiones en las que cada una devuelve unos datos diferentes, ¿cómo crear diferentes manejadores para poder trabajar de forma correcta con todas las conexiones? Esque no se cómo hacer que por ejemplo connectionDidFinishLoading ejecute unas acciones u otras dependiendo de la conexión, ya que cada conexión devuelve un JSON diferente. No se si me he explicado bien..

por nanoDev el 17 de mayo del 2012 a las 08:03

16 de mayo del 2012

NSCodeCenter

Como elaborar una video conferencia entre 2 dispositivos?

Buenas, estoy elaborando un juego de ajedrez entre dos dispositivos y me gustaría agregarle video conferencia entre los jugadores, alguno conoce alguna librería o sinippets de código para hacer esto.

He buscado y conseguí una aplicación llamada idoubs, pero la descargue y no he conseguido hacerla correr.

Gracias de antemano

por metalsoul89 el 16 de mayo del 2012 a las 20:47

Enviar notificaciones push de manera automatica

Que metodología debería usar, para que, cuando se produzca un cambio en la base de datos de mi aplicación de escritorio, pueda mandar una notificación push.

Algo como:

Aplicación escritorio(.net) -> Web Service(ISS) -> Servidor(VPS) -> APNS -> Aplicación iOS

  • Y algo muy básico, si tengo una tabla con clientes, añado, edito o elimino uno, COMO ME ENTERO DE QUE ESTO HA OCURRIDO?!?! (Esto es de lo que más me interesa).

  • Como puedo lanzar una notificación push, cuando se genera un evento? (Cualquier cambio en la base de datos, cualquier evento lanzado desde la aplicación de escritorio...)

  • Como podría realizar la comunicación entre el web service del IIS, y el servidor que se encarga de realizar las notificaciones al APNS?

  • Se podrían unificar ambos servidores???

  • Resumiendo: como me entero de que han habido cambios en la base de datos, y notificarlo vía push?

No se si me pierdo algo, seguro... agradecería alguna orientación, o si hay alguna documentación acerca de esto (aparte de la que proporciona apple), llevo un par de días buscando pero no doy con la solución...

Necesito algo justo como esto (Sin página web , pero con una aplicación iOS, conocéis algún tutorial, libro interesante que hable sobre este tema?):

Saludos y gracias. Por favor ayuda.

por mserra el 16 de mayo del 2012 a las 14:28

Filtro avanzado de palabras

¡Hola a todos!

Estoy intentando filtrar unas palabras malsonantes al nombre de usuario.

Tengo el siguiente código:

-(BOOL)addNewUser:(NSString *)user
{

innapropiateNames = [[NSArray alloc] initWithObjects:@"Palabra1",@"Palabra2",@"Palabra3", @"Palabra4", nil];
NSPredicate *usesInnapropiateNames = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@",user];
NSArray *resultInnapropiateNames = [innapropiateNames filteredArrayUsingPredicate:usesInnapropiateNames];

if([resultInnapropiateNames count] > 0) {
    NSLog(@"Hay alguna palabra malsonante");
}else{
    NSLog(@"No hay palabras malsonantes");
}

Lo que no se como hacer es que por ejemplo la palabra no apropiada la detecte en varios sitios, por ejemplo:

Josépalabra

palabraJosé

José palabra

JosépalabraJosé

JosépalabraJosépalabraJosé

¿Alguien me puede ayudar con ello?

Gracias!

por murb83 el 16 de mayo del 2012 a las 11:00

15 de mayo del 2012

NSCodeCenter

sobre subida de la app al apple store

Hola a todos. Llevo 6 horas intentándolo y no hay forma de subir la aplicación.

He rellenado el formulario de Apple y ahora está "Waiting For Upload" en iTunes Connect. El problema está en el archivo y validación. En el llavero genero un certificado (Asistente de certificados -> solicitar un certificado) y lo guardo en el disco.

Me voy a Provisioning Portal, en Certificates -> Distribution cargo el certificado que me generó el llavero (sólo tengo este certificado).

En provisioning -> Distribution creo un nuevo profile que descargo y lo arrastro sobre Xcode. En este compruebo en build settings que en release tenga cargado el profile que acabo de arrastrarle.

Y aquí empiezan los problemas: para archivar (product -> archive) tengo que tener el iPhone conectado sino no me lo permite. Me voy a schemas, selecciono archivar, le doy a product -> archive y me da errores de todo tipo (como que hay más certificados en el keychain y sólo debería haber uno, o que "el profile which doesn't match the current setting 'Dominio.NombreApp'").

De pura suerte en alguno de los intentos (y no sé por que) he conseguido pasar esto y sin darme error he podido archivar, pero el Organizer al validar me da error del bundle.

Siento el ladrillo pero estoy bastante desesperado por que la app tiene que estar lista para el viernes de la semana que viene y no sé si llegaré.

Un saludo y gracias.

por Javier el 15 de mayo del 2012 a las 21:16

Bucle for dentro de otro bucle for

Estoy en un proyecto en el que parte del código es el siguiente:

contadorAuxiliar = 0;
//Ahora mismo el valor de userCount es 25    
for (int y_axis=0; y_axis<=8; y_axis++)  //FILAS
{
    for (int x_axis=0; x_axis<=2; x_axis++) //COLUMNAS
    {
        if (contadorAuxiliar<contadorUsuarios) {     
            NSLog(@"ContadorAuxiliar: %i\n",contadorAuxiliar);
            NSLog(@"ContadorUsuarios: %i\n\n",contadorUsuarios);
            UIButton *btn=       [[UIButton alloc] initWithFrame:CGRectMake(16+100*x_axis,115.0*y_axis,88.0 ,88.0)];
            UILabel *userLabel = [[UILabel alloc] initWithFrame:CGRectMake(16+100*x_axis,90+115.0*y_axis, 88.0, 15.0)];
            userLabel.textAlignment = UITextAlignmentCenter;
            userLabel.text = mensaje;

            btn.backgroundColor=[UIColor groupTableViewBackgroundColor];
            [scrollViewUsers addSubview:btn];
            [scrollViewUsers addSubview:userLabel];

            contadorAuxiliar++;

        }
    }
}

Con esto, lo que quiero es mostrar una matriz por pantalla de 3 columnas y X filas con un botón y un textLabel en cada posición. Pero tengo un problema y es que solamente muestra 3 filas, siendo la última de un solo elemento. En el debug area muestra el siguiente mensaje:

ContadorAuxiliar: 0 ContadorUsuarios: 25

ContadorAuxiliar: 4 ContadorUsuarios: 25

ContadorAuxiliar: 8 ContadorUsuarios: 25

ContadorAuxiliar: 12 ContadorUsuarios: 25

ContadorAuxiliar: 16 ContadorUsuarios: 25

ContadorAuxiliar: 20 ContadorUsuarios: 25

ContadorAuxiliar: 24 ContadorUsuarios: 25

Es decir, que contadorAuxiliar aumenta de 4 en 4. Creo que solo se ejecuta en cada iteración del primer bucle for y luego en las ejecuciones del segundo for no hace nada más que incrementar el valor de contadorAuxiliar, pero solo son suposiciones. No se en qué puedo estar fallando porque por más que reviso el código no veo nada extraño. Espero que podais ayudarme, gracias!!

Resuelto, error de novato!!

por nanoDev el 15 de mayo del 2012 a las 12:59

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Ultimo día en Bogotá, tras el curso de programación iPhone

De Padawan a Maestro Jedi El sábado mi padawan Martín Meneses tuvo la amabilidad de invitarme a conocer Bogotá y los alrededores. Tras recogerme en el hotel a las 9:00 partimos para la primera escala: la Catedral de Sal. La idea era llegar pronto antes que los “trancones” (atascos) de Bogotá nos dificultasen la vida. [...]

por frr149 el 15 de mayo del 2012 a las 03:17

14 de mayo del 2012

NSCodeCenter

Que hay mal, porque no me entra en ...

Bueno pues eso, que puede ser? porque no me entra en la linea: '' if (sqlite3_prepare_v2(baseDatos, query_stmt, -1, &statement, NULL) == SQLITE_OK) ''

const char *dbpath = [[self pathBaseDatos] UTF8String];

if (sqlite3_open(dbpath, &baseDatos) == SQLITE_OK)
{
    //Método accesor a la clase ViewController!
    NSString *querySQL = @"SELECT cliente FROM cliente WHERE id_cliente=1";

    const char *query_stmt = [querySQL UTF8String];

    sqlite3_stmt *statement;

    if (sqlite3_prepare_v2(baseDatos, query_stmt, -1, &statement, NULL) == SQLITE_OK)
    {
        if (sqlite3_step(statement) == SQLITE_ROW)
        {

        } else {

        }
        sqlite3_finalize(statement);
    }

    sqlite3_close(baseDatos);

}

por mserra el 14 de mayo del 2012 a las 16:37

¿Puedo asignar el valor a un UIColor determinado mediante variable?

Buenas, tengo una pregunta para ver si alguien me puede ayudar.

Quiero cambiar de color el background de un botón, pero me gustaría hacerlo mediante una variable. De esta forma me funciona perfectamente.

boton.backgroundColor = [UIColor blackColor];


Pero mi intención es hacer algo parecido a esto:

1º Por un lado defino una variable para guardar el color y le doy un valor.

NSString *colores;
colores=@"orangeColor";


2º Le asigno esa variable como valor del UIColor

boton.backgroundColor = [UIColor colores];


Esto no me funciona, me muestra un error.
(Realmente no se si estoy haciendo algo mal, o bien no es posible hacerlo de esta forma).

Lo que necesito vendría a ser algo parecido a esto.
Por si aclara un poco más lo que necesito. (ejemplo con PHP y HTML)

<?php color="Verde"; ?> <div>El color de los árboles es el <?php echo color; ?></div>


Si pueden ayudarme les estaría muy agradecido.

por eneakao el 14 de mayo del 2012 a las 16:13

Reproducir sonido uiscrollview

Hola a todos estoy tratando de reproducir 10 sonidos 1 por cada posición.El problema que se me reproducen todos a la vez.Tengo un uiscrollview con 10 pantallas y quería reproducir un sonido cada vez que paso a una pantalla.

En el viewdid load cargo las pantallas.Y fuerzo que suene el 1er sonido en la 1era pantalla hasta ahí todo ok

- (void)viewDidLoad {

    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    NSLog(@"entro en el viewdidload");
    pageControlBeingUsed = NO;
    int intIndex = 0;
    pa1 = [[Palabra1 alloc] initWithNibName:@"Palabra1" bundle:nil];
    pa2 = [[Palabra2 alloc] initWithNibName:@"Palabra2" bundle:nil];
    pa3 = [[Palabra3 alloc] initWithNibName:@"Palabra3" bundle:nil];
    pa4 = [[Palabra4 alloc] initWithNibName:@"Palabra4" bundle:nil];
    pa5 = [[Palabra5 alloc] initWithNibName:@"Palabra5" bundle:nil];
    pa6 = [[Palabra6 alloc] initWithNibName:@"Palabra6" bundle:nil];
    pa7 = [[Palabra7 alloc] initWithNibName:@"Palabra7" bundle:nil];
    pa8 = [[Palabra8 alloc] initWithNibName:@"Palabra8" bundle:nil];
    pa9 = [[Palabra9 alloc] initWithNibName:@"Palabra9" bundle:nil];
    pa10 = [[Palabra10 alloc] initWithNibName:@"Palabra10" bundle:nil];
    NSArray *pages = [[NSArray alloc] initWithObjects:pa1,pa2,pa3,pa4,pa5,pa6,pa7,pa8,pa9,pa10,nil];
    self.view.autoresizesSubviews = YES;
    for (int i=0; i < 10; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        UIView * vista = [[pages objectAtIndex:i]view];
        vista.frame = frame;
        [self.scrollView addSubview:vista];   
    }
    NSLog(@"viewCurrent %i",intIndex);
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 10, self.scrollView.frame.size.height);
    [self reproducirsonido:[self getsonido:1]];
    self.pageControl.currentPage = 0;
    self.pageControl.numberOfPages = 10;

}

El problema viene aquí en la transición de pantalla estuve jugando con el pagecontroll.currentpage y nada ahí es donde me reproduce los 10 sonidos a la vez cuando paso de pantalla.

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    if (!pageControlBeingUsed) {
        // Switch the indicator when more than 50% of the previous/next page is visible
        CGFloat pageWidth = self.scrollView.frame.size.width;
        int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
        self.pageControl.currentPage = page;
        ERROR AQUI SE REPRODUCEN TODOS//[self reproducirsonido:[self getsonido:page]];
        NSLog(@"page %i,",page);
    }
}

el reproducir sonido es un simple método para reproducir sondido y el getsonido un swicht que devuelve el sonido en cada posición.

muchas gracias

por daniii3 el 14 de mayo del 2012 a las 08:36

11 de mayo del 2012

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Y sonó el último asalto en el Curso de desarrollo iOS del Big Nerd Ranch en Colombia

Hoy terminó el último día de curso de programación iPhone en Bogotá del Big Nerd Ranch. Ha sido un curso duro, a veces agotador, pero ninguno de mis padawans se ha rajado. A lo largo de 5 demoledores asaltos hemos visto entre otras cosas: Geolocalización (CoreLocation & MapKit), Vistas personalizadas (CoreGraphics) ScrollView ViewControllers Controladores de [...]

por frr149 el 11 de mayo del 2012 a las 22:08

Pasamos el ecuador en el curso de programación iPhone & iPad del Big Nerd Ranch en Bogotá

¡Olé Desarrolladores iOS de Colombia! Ya llevo varios días en Bogotá impartiendo el primer curso de programación iOS del Big Nerd Ranch en Colombia. Aunque he dado cursos de desarrollo iOS a muchos grupos y en varios países, he visto pocos tan esforzados como éste. Chuck Norris era cachaco y programaba para iOS El curso [...]

por frr149 el 11 de mayo del 2012 a las 01:56

09 de mayo del 2012

NSCodeCenter

Master-Detail-View Application con 2 Tablas SQLite y Storyboard

Buenas, tengo que hacer una aplicación maestro-detalle, con storyboards, que se nutra de 2 tablas mediante SQLite (Core Data no me 'sirve'). Pues buscando recursos por la web, me he encontrado con estos tres tutoriales, ya que en libros no encuentro esto concretamente, mi pregunta es:

  • Conocéis algún tutorial que esté igual o mejor de bien que estos dos que propongo?

Ademá de estos tres tutoriales, dos no usan storyboards, y uno de estos dos que no usan storyboards, tarda demasiado en cargar la vista detalle, no creo que sea percepción mía, ya que he hecho/visto otras apps Maestro-Detalle y no van tan lentas.

  • Cual de estos 3 tutoriales u otros tutoriales me recomendáis que carguen 2 o más tablas?

La que usa Storyboards (Pero también core data, que no me sirve):

La que va lenta y sin Storyboards: (Sabéis a que se puede deber?)

Otro ejemplo y sin Storyboards:

Muchas gracias.

por mserra el 09 de mayo del 2012 a las 13:46

08 de mayo del 2012

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Primer día del curso de programación iPhone del Big Nerd Ranch en Bogotá

Hoy hemos empezado las clases del curso de programación iPhone & iPad del Big Nerd Ranch en Colombia. El curso se está impartiendo en el Hotel Radisson de la zona norte de Bogotá. “No es avión para mujeres viejas” La llegada en sí fue sin ningún percance, en un vuelo de Iberia. Hacía años (unos [...]

por frr149 el 08 de mayo del 2012 a las 00:33

07 de mayo del 2012

NSCodeCenter

Implementar app Web Service SOAP -> SIN librerías de terceros

Buenas, necesito hacer una aplicación que se conecte a un servicio ASP, SOAP/WSDL/AMSX ([.NET] )

Y mi pregunta es:

:/

por mserra el 07 de mayo del 2012 a las 08:36

04 de mayo del 2012

NSCoder Night Madrid

Y esta vez, presentaciones

El próximo miércoles 9 de mayo a partir de las 19:15h tenemos de nuevo otra de las esperadas sesiones de charlas. Serán en Ciball Madrid en calle Corredera Baja de San Pablo 41 (metro Gran Vía o Tribunal). Las presentaciones que se van a realizar son:

  1. “Experiencias en el desarrollo de una app”, por Roberto Perez (@hylian)
  2. “Web y cliente iOS en 45min” por Javi Moreno (@jmoreno78) y yo (@jdortiz)
  3. “Google Analitics SDK for IOS” por Juan Antonio Martin (@byjuanamn)

Los temas prometen y me consta que hay mucho trabajo puesto en ellas. Lo que es seguro, es que con que se mantenga el nivel de las últimas semanas, nadie va a quedar descontento. En la última sesión estuvimos hablando un buen rato de TDD, que dio luego algo de juego en la lista de correo, de diseño y usabilidad e incluso de posibilidades de ocio, con componente técnica para el verano. Si te parece interesante, no deberías faltar a la próxima y disfrutar de las presentaciones. ¡Ven!

04 de mayo del 2012 a las 22:15

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Curso de programación iPhone & iPad del Big Nerd Ranch en Colombia

Big Nerd Ranch en Colombia Este lunes empieza el primer curso de programación iPhone & iPad del Big Nerd Ranch en Colombia, que impartiré como formador del Big Nerd Ranch. Curso iOS en Bogotá El primero será en Bogotá, en el hotel Radisson Royal y durará toda la semana. Me dedicaré a impartir sabiduría al [...]

por frr149 el 04 de mayo del 2012 a las 21:40

NSCodeCenter

Acceso a ViewController desde AppDelegate

Bueno he conseguido el paso inverso, comunicarme/acceder a métodos/propiedades desde el View Controller hacia el AppDelegate. Pero llevo un par de horas intentando acceder desde el AppDelegate al ViewController y nada...

Por si a alguien le interesa cómo acceder desde el ViewController al AppDelegate:

AppDelegate *myAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

[myAppDelegate METODO-A-LLAMAR];

Lo que estoy intentando sin ninguna suerte es algo así:

ViewController *myViewController = [[ViewController alloc] init];

UITextField *tf = [myViewController txtNombre];

tf.text = @"NuevoTexto";

*txtNombre es un TextField, declarado en el ViewController.

Alguien sabe el paso inverso? Gracias. Saludos.

por mserra el 04 de mayo del 2012 a las 11:31

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

Nueva herramienta para desarrollo iOS con Ruby: RubyMotion

Ayer se lanzó al mercado una nueva herramienta para programación iPhone: RubyMotion.  No he tenido demasiado tiempo para verlo, le echaré una vistazo con calma a la vuelta del Curso de desarrollo iPhone del Big Nerd Ranch en Colombia.   Impresiones preliminares de RubyMotion Lo primero que me llamó la atención fue ¿cómo han logrado [...]

por frr149 el 04 de mayo del 2012 a las 08:02

03 de mayo del 2012

NSCodeCenter

Comunicación Servidor->Cliente (Alternativa APNS)

Hay alguna alternativa a A.P.N.S?

Hay alguna manera de que el teléfono esté a la escucha(en primer y segundo plano) de algún cambio en el servidor?

Por ejemplo: Una aplicación para gestionar ventas de distintas empresas, ataca a un web service (WSDL), y persiste los datos en una base de datos en SQLite.

-> Además el servidor sólo debe avisar cada vez que se cierra una venta, a la empresa que ha realizado la venta. (¿Cómo hacerlo sin el A.P.N.S?)

  • DISPOSITIVO -> WEB SERVICE (Realiza petición)

  • WEB SERVICE -> DISPOSITIVO (Responde)

  • DISPOSITIVO -> SQLITE (Persistencia datos)

  • Se realiza algún cambio en el servidor: -->

  • WEBSERVICE -> DISPOSITIVO (????COMO REALIZAR COMUNICACIÓN???? desde el Web Service hacia el dispositivo)

1) Se pueden mandar notificaciones push a los dispositivos sin tener que pasar por el A.P.N.S?

2) Hay alguna alternativa a las notificaciones push / A.P.N.S? (Que no sea estar preguntandole cada X minutos al servidor si han habido cambios)

3) Cual es el mechaniso más óptimo para reciter notifications cuando se realizan cambios en el servitor?

Saludos y muchas gracias. ;)

por mserra el 03 de mayo del 2012 a las 09:05

01 de mayo del 2012

Cocoa Mental: Programación en Cocoa y Cocoa Touch parar OSX y iOS

iPhone 5 con carcasa de aluminio Unibody

Según iPhone 5 Latest, parece ser que el iPhone 5 podría tener una carcasa de aluminio de tipo Unibody. La pinta desde luego es buena, y sin duda representaría una mejora en la resistencia a los golpes (aunque hoy por hoy, la actual carcasa aguanta más de lo que yo hubiese esperado). Mi única preocupación [...]

por frr149 el 01 de mayo del 2012 a las 15:27