2009-09-25 11 views
78

J'ai un point appelé CGPoint qui est attribué une touche:NSLog avec des données CGPoint

UITouch *touch = [touches anyObject]; 

CGPoint point = [touch locationInView:self]; 

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

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

Lorsque j'utilise ce, connecter la sortie est constitué par:

x: (null)

j'ai vérifié que le point est non nulle lorsque thi s est appelé en utilisant le débogueur et la surveillance des variables.

Toute aide appréciée,

Merci :) //

Répondre

239

En fait, la vraie façon la plus simple de se connecter une CGPoint est:

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

Le bureau équivalent de cacao est NSStringFromPoint().

+0

Ce qui est encore mieux. La première réponse est la façon de poids la plus facile et la plus légère. Mais cela me permet à la fois x et y du CGPoint dans un ensemble.Nice :) Super outil :) – Spanky

+0

Depuis que StackOverflow a jugé bon de réintroduire cette question dans mon flux RSS, je peux aussi bien pimper ma solution générale: http://jens.ayton.se/blag/almost-elegant-cave-man- débogage/qui vous permet d'aller 'JA_DUMP (point);' et obtenir "point = {43, 96}" connecté sans avoir à se soucier des codes de format. –

+0

Comment utiliser votre lib puisqu'il compile sur I386 mais pas sur ARM? Je veux dire, comment puis-je travailler sur des projets iOS en l'utilisant? –

25

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

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

La façon la plus simple de se connecter une valeur CGPoint est d'utiliser la classe NSValue, car elle vous donnera toutes les valeurs pertinentes bien formatées pour la console. Il est fait comme ceci:

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

Vous pouvez également utiliser les méthodes de +valueWithCGRect et +valueWithCGSizeNSValue quand vous essayez de vous connecter, par exemple, les frame (CGRect) ou size (CGSize) propriétés d'un UIView.

0

point.x est un nombre à virgule flottante donc vous devriez code comme ceci:

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

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

+0

Si vous voulez Chaîne de valeur signifie que vous utilisez juste cela !! –

+4

Vous faites 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. –

1

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

0

utilisation:

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

Vous pouvez également utiliser NSString pour informations suivantes:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets