2009-09-25 8 views
78

ho una chiamata punto CGPoint che viene assegnato un tocco:NSLog con CGPoint dati

UITouch *touch = [touches anyObject]; 

CGPoint point = [touch locationInView:self]; 

voglio ottenere il valore x nel mio log della console:

NSLog(@"x: %s", point.x); 

Quando uso questa uscita, registro per questo è:

x: (null)

ho verificato che il punto non è nullo quando thi s è chiamato usando il debugger e la variabile watch.

Qualsiasi aiuto apprezzato,

Grazie // :)

risposta

239

In realtà, il vero modo più semplice per registrare un CGPoint è:

NSLog(@"%@", NSStringFromCGPoint(point)); 

Il desktop cacao equivalente è NSStringFromPoint().

+0

questo è ancora meglio. La prima risposta è il modo più semplice e leggero. Ma questo mi prende sia xey dal CGPoint in un set.Bello :) Ottimo strumento :) – Spanky

+0

Da quando StackOverflow ha ritenuto opportuno reintrodurre questa domanda nel mio feed RSS, posso anche pimpare la mia soluzione generale: http://jens.ayton.se/blag/almost-elegant-cave-man- debugging/che consente di andare in "JA_DUMP (point);" e ottenere "point = {43, 96}" registrato senza doversi preoccupare dei codici di formato. –

+0

Come uso la tua lib dal momento che si compila su I386 ma non su ARM? Voglio dire, come posso lavorare su progetti iOS che lo utilizzano? –

25

point.x è un numero in virgola mobile, così si dovrebbe usare:

NSLog(@"x: %f", point.x); 
9

Il modo più semplice per registrare un valore CGPoint è quello di utilizzare la classe NSValue, poiché ti darà tutti i valori rilevanti formattati per la console. E 'fatto in questo modo:

NSLog(@"myPoint = %@", [NSValue valueWithCGPoint:myPoint]); 

È anche possibile utilizzare i +valueWithCGRect e +valueWithCGSize metodi di NSValue quando si sta cercando di accedere, per esempio, le (CGSize) proprietà frame (CGRect) o size di un UIView.

0

point.x è un numero in virgola mobile così si dovrebbe codice come questo:

NSLog(@"%@",[NSString StringWithFormat:@"%f",point.x]); 
+3

.... o "NSLog (@"% f ", point.x)' –

+0

Se vuoi il valore di stringa significa che lo usi solo !! –

+4

Stai facendo una stringa di formato non necessaria all'interno di una stringa di formato. Gli approcci di Philippe e Ahruman sono molto più semplici e raggiungono esattamente gli stessi risultati. –

1

NSLog(@"point x,y: %f,%f", point.x, point.y);

0

uso:

NSLog (@ "% @", NSStringFromCGPoint (punto));

È inoltre possibile utilizzare NSString per seguenti informazioni:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets