2011-07-24 14 views
17

Para el uso dentro de Core Data intenté construir un objeto NSPredicate. minLength y maxLength son de tipo int:EXC_BAD_ACCESS al intentar construir una cadena usando% @ para un int

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %@ AND length <= %@", 
          minLength, maxLength]; 

El programa se bloquea aquí con un EXC_BAD_ACCESS. Este no es el caso si uso %d en lugar de %@:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %d AND length <= %d", 
          minLength, maxLength]; 

Qué me estoy perdiendo aquí?

Respuesta

49

%@ es el format specifier para objetos. Un int no es un objeto. El especificador de formato para enteros con signo es %d o %i.

+0

¡Por supuesto! Gracias;) – Norbert

+0

@Norbert De nada :) – albertamg

+1

Si por alguna razón necesitas tratarlos como objetos, puedes mirar NSNumber. – Monolo

5

En formato para int, no debe usar %@, pero %i. %@ es para objetos`.

Cuestiones relacionadas