NSLog з даними CGPoint


93

У мене є CGPoint, що називається точкою, якій присвоюється дотик:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

Я хочу отримати значення координати x у свій журнал консолі:

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

Коли я використовую це, вихідний журнал для цього:

x: (null)

Я перевірив, що точка не є нульовою, коли це викликається за допомогою налагоджувача та змінних годин.

Будь-яка допомога оцінена,

Дякую // :)

Відповіді:


259

Насправді, найпростіший спосіб реєстрації CGPoint:

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

Настільний еквівалент какао - NSStringFromPoint().


Це ще краще. Перша відповідь - це найпростіший і найлегший спосіб ваги. Але це отримує як x, так і y від CGPoint в одному наборі. Хороший :) Чудовий інструмент :)
Spanky

Оскільки StackOverflow вважав за потрібне відновити це питання в моєму RSS-каналі, я також можу сутенерствувати своїм загальним рішенням: jens.ayton.se/blag/almost-elegant-cave-man-debugging, яке дозволяє вам JA_DUMP(point);отримати і отримати “point = { 43, 96} »реєструється, не турбуючись про коди формату.
Jens Ayton

Як мені використовувати вашу бібліотеку, оскільки вона компілюється на I386, але не на ARM? Я маю на увазі, як я можу працювати над проектами iOS, використовуючи його?
Ден Розенстарк

По-перше, вам потрібно буде створити файл FindAlignment.c як додаток для iOS і запустити його на пристрої (а не на симуляторі). Потім скопіюйте результат у новий блок #elif перед #else у рядку 172 у JAValueToString.m. Якщо це не допоможе, знадобиться додаткова налагодження. Я не можу це зробити, оскільки не в програмі iOS.
Йенс Айтон,

3
Також варто зазначити, що NSStringFromCGRect () теж існує.
djskinner


9

Найпростіший спосіб реєстрації CGPointзначення - це використання NSValueкласу, оскільки він дасть вам усі відповідні значення, відформатовані красиво для консолі. Це робиться так:

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

Ви також можете використовувати +valueWithCGRectі +valueWithCGSizeметоди, NSValueколи намагаєтеся ввійти, скажімо, у властивості frame( CGRect) або size( CGSize) UIView.



0

point.x - це число з плаваючою комою, тому вам слід кодувати так:

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

Якщо ви хочете значення String означає, що просто використовуйте це !!

4
Ви робите непотрібний рядок форматування всередині рядка формату. Підходи Філіппа та Арумана набагато простіші, і вони досягають абсолютно однакових результатів.
Бред Ларсон

0

використання:

NSLog (@ "% @", NSStringFromCGPoint (точка));

Ви також можете використовувати NSString для наступної інформації:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.