NSLog con dati CGPoint


93

Ho un punto chiamato CGPoint a cui viene assegnato un tocco:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

Voglio ottenere il valore della coordinata x nel mio registro della console:

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

Quando lo uso, l'output del log per questo è:

x: (null)

Ho verificato che il punto non è nullo quando viene chiamato utilizzando il debugger e la variabile watch.

Qualsiasi aiuto apprezzato,

Grazie // :)

Risposte:


259

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

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

L'equivalente desktop Cocoa è NSStringFromPoint().


Questo è anche meglio. La prima risposta è il modo più semplice e leggero. Ma questo mi fa ottenere sia x che y dal CGPoint in un set. Bello :) Ottimo strumento :)
Spanky

Dato che StackOverflow ha ritenuto opportuno reintrodurre questa domanda nel mio feed RSS, posso anche sfruttare la mia soluzione generale: jens.ayton.se/blag/almost-elegant-cave-man-debugging che ti permette di andare JA_DUMP(point);e ottenere "point = { 43, 96} "registrati senza doversi preoccupare dei codici di formato.
Jens Ayton

Come si usa la libreria poiché si compila su I386 ma non su ARM? Voglio dire, come posso lavorare su progetti iOS utilizzandolo?
Dan Rosenstark

Innanzitutto, dovresti creare il file FindAlignment.c come app iOS ed eseguirlo su un dispositivo (non simulatore). Quindi, copia il risultato in un nuovo blocco #elif prima di #else alla riga 172 in JAValueToString.m. Se questo non funziona, sarà richiesto un ulteriore debug. Non posso farlo poiché non sono nel programma iOS.
Jens Ayton

3
Vale anche la pena notare che esiste anche NSStringFromCGRect ().
djskinner

24

point.x è un numero in virgola mobile, quindi dovresti usare:

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

9

Il modo più semplice per registrare un CGPointvalore è usare la NSValueclasse, poiché ti fornirà tutti i valori rilevanti formattati in modo appropriato per la console. È fatto così:

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

Puoi anche usare i metodi +valueWithCGRecte quando stai tentando di registrare, ad esempio, le proprietà ( ) o ( ) di un file .+valueWithCGSizeNSValueframeCGRectsizeCGSizeUIView


1

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


0

point.x è un numero in virgola mobile, quindi dovresti codificare in questo modo:

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

Se vuoi un valore String significa che usa questo !!

4
Stai eseguendo una stringa di formato non necessaria all'interno di una stringa di formato. Gli approcci di Philippe e Ahruman sono molto più semplici e ottengono gli stessi identici risultati.
Brad Larson

0

uso :

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

Puoi anche usare NSString per le seguenti informazioni:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.