2012-03-22 15 views
6

Fue muy extraño cuando vi esto al depurar mi aplicación.Muy extraño -% No trabajé para enteros, ¿% did?

int iTag = btnTemp.tag; //btnTemp.tag = 1 
NSString *strFriendID = [NSString stringWithFormat:@"%i",iTag]; 

me dio strFriendID cadena como vacía.

int iTag = btnTemp.tag;  //btnTemp.tag = 1 
NSString *strFriendID = [NSString stringWithFormat:@"%d",iTag]; 

me dio strFriendID como .

¿Cómo puede suceder esto?

+2

Eso es * * extraña, se puede verificar con '[str NSString ingWithFormat: @ "[% d |% i]", iTag, iTag] '- ¿Cuál es el resultado de eso? (Tenga en cuenta el uso de ambos, el "trabajo" primero, y guardias zomg-I-was-tricked.) –

+0

Lo comprobé en mi aplicación ... Está funcionando bien ... Tanto% d como% i dándome 1 ... –

+0

Exactamente Karan. No sé por qué. – Nitish

Respuesta

2

No sé por qué se obtiene esta respuesta, pero cuando leí tu pregunta Traté en mi proyecto pero me da el valor

UIButton *btnTemp = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
btnTemp.tag = 1; 
int iTag = btnTemp.tag; //btnTemp.tag = 1 
NSString *strFriendID = [NSString stringWithFormat:@"%i",iTag]; 
NSLog(@"Str %@", strFriendID); 
NSString *strFriendID1 = [NSString stringWithFormat:@"%d",iTag]; 
NSLog(@"Str %@", strFriendID1); 

fuera Ponga

2012-03-26 10:32:02.899 Leaves[506:f803] Str 1 
2012-03-26 10:32:02.901 Leaves[506:f803] Str 1 

tanto me da 1

1

Según Apple:

%d, %D and %i all represent Signed 32-bit integers. 

Así que sí que es raro que% i no funcionaba, pero no es tan raro que trabajó% d.

Quizás btnTemp.tag era nula en ese punto

+0

no puede ser nulo, no es un valor de referencia ... – borrrden

+1

No es nulo Mako. – Nitish

+0

Esto es más un comentario que una respuesta, simplemente estás escribiendo lo que está en la cabeza del autor. – iNoob

Cuestiones relacionadas