NSLog avec les données CGPoint


93

J'ai un point appelé CGPoint auquel une touche est attribuée:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

Je veux obtenir la valeur de coordonnée x dans mon journal de console:

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

Lorsque j'utilise ceci, la sortie du journal pour ceci est:

x: (nul)

J'ai vérifié que le point n'est pas nul lorsqu'il est appelé à l'aide du débogueur et de la surveillance variable.

Toute aide appréciée,

Merci // :)

Réponses:


259

En fait, le moyen le plus simple de consigner un a CGPointest:

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

L'équivalent de bureau Cocoa est NSStringFromPoint().


C'est encore mieux. La première réponse est le moyen le plus simple et le plus léger. Mais cela me permet d'obtenir à la fois x et y du CGPoint dans un seul ensemble. Nice :) Great tool :)
— Spanky

Puisque StackOverflow a jugé bon de réintroduire cette question dans mon flux RSS, je pourrais aussi bien pimper ma solution générale: jens.ayton.se/blag/almost-elegant-cave-man-debugging qui vous permet d'aller JA_DUMP(point);chercher "point = { 43, 96} ”connecté sans avoir à se soucier des codes de format.
— Jens Ayton

Comment utiliser votre bibliothèque puisqu'elle compile sur I386 mais pas sur ARM? Je veux dire, comment puis-je travailler sur des projets iOS en l'utilisant?
— Dan Rosenstark

Tout d'abord, vous devez créer le fichier FindAlignment.c en tant qu'application iOS et l'exécuter sur un appareil (pas un simulateur). Ensuite, copiez le résultat dans un nouveau bloc #elif avant le #else à la ligne 172 dans JAValueToString.m. Si cela ne fonctionne pas, un débogage supplémentaire sera nécessaire. Je ne peux pas le faire car je ne suis pas dans le programme iOS.
— Jens Ayton

3
Il convient également de noter que NSStringFromCGRect () existe également.
— djskinner

24

point.x est un nombre à virgule flottante, vous devez donc utiliser:

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

9

Le moyen le plus simple de consigner une CGPointvaleur est d'utiliser la NSValueclasse, car elle vous donnera toutes les valeurs pertinentes bien formatées pour la console. C'est fait comme ça:

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

Vous pouvez également utiliser les méthodes +valueWithCGRectet lorsque vous essayez de consigner, par exemple, les propriétés ( ) ou ( ) d'un fichier .+valueWithCGSizeNSValueframeCGRectsizeCGSizeUIView


1

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


0

point.x est un nombre à virgule flottante, vous devez donc coder comme ceci:

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

Si vous voulez une valeur de chaîne, vous devez simplement l'utiliser!

4
Vous créez une chaîne de format inutile dans une chaîne de format. Les approches de Philippe et Ahruman sont beaucoup plus simples et aboutissent exactement aux mêmes résultats.
— Brad Larson

0

utilisation :

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

Vous pouvez également utiliser NSString pour les informations suivantes:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.