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.