2009-09-25 8 views
78

Mam CGPoint zwany punkt, który jest przypisany touch:NSLog z CGPoint dane

UITouch *touch = [touches anyObject]; 

CGPoint point = [touch locationInView:self]; 

Chcę uzyskać wartość współrzędnej X w moim dzienniku konsoli:

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

Gdy używam to wyjście, log na to:

x: (null)

I sprawdzeniu, że punkt nie jest null, gdy jes s nazywa się za pomocą debuggera i zmiennej zegarka.

Każda pomoc mile widziane,

Dzięki // :)

Odpowiedz

239

Faktycznie, prawdziwa Najprostszym sposobem, aby zalogować się CGPoint jest:

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

Pulpit równoważne Kakao jest NSStringFromPoint().

+0

To jest jeszcze lepsze. Pierwsza odpowiedź to najprostszy i najlżejszy sposób na obciążenie. Ale to daje mi zarówno X, jak i Y z CGPoint w jednym zestawie.Nice :) Świetne narzędzie :) – Spanky

+0

Od kiedy StackOverflow uznał za stosowne powtórne wprowadzenie tego pytania w moim kanale RSS, mogę równie dobrze pimpować moim ogólnym rozwiązaniem: http://jens.ayton.se/blag/almost-elegant-cave-man- debugowanie/które pozwala ci na wywołanie 'JA_DUMP (point);' i zapisanie "point = {43, 96}" bez martwienia się o kody formatu. –

+0

Jak korzystać z biblioteki, ponieważ kompiluje się na I386, ale nie na ARM? Mam na myśli, jak mogę pracować z projektami iOS, które go używają? –

25

point.x jest liczba zmiennoprzecinkowa, więc należy używać:

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

Najprostszym sposobem, aby zalogować wartość CGPoint jest użycie klasy NSValue, ponieważ da ci wszystkie odpowiednie wartości sformatowane ładnie dla konsoli. To się robi tak:

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

Można również użyć +valueWithCGRect i +valueWithCGSize metod NSValue gdy starasz się zalogować, powiedzmy, frame (CGRect) lub size (CGSize) właściwości UIView.

0

point.x jest zmiennoprzecinkowych numer więc należy kodować tak:

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

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

+0

Jeśli chcesz wartość ciągu oznacza, po prostu użyj tego !! –

+4

Tworzysz niepotrzebny ciąg formatu w ciągu formatu. Podejścia Philippe'a i Ahrumana są znacznie prostsze i osiągają dokładnie takie same wyniki. –

1

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

0

zastosowanie:

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

Można również użyć NSString do następujących informacji:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets