NSLog с данными CGPoint

93

У меня есть точка с именем CGPoint, которой назначается касание:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

Я хочу записать значение координаты x в журнал консоли:

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

Когда я использую это, вывод журнала для этого:

х: (ноль)

Я проверил, что точка не равна нулю, когда это вызывается с помощью отладчика и переменной watch.

Любая помощь приветствуется,

Спасибо // :)

Отшлепанный
источник

Ответы:

259

На самом деле, самый простой способ зарегистрировать a 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} ”, не беспокоясь о кодах формата.
Йенс Эйтон,
Как мне использовать вашу библиотеку, если она компилируется на I386, но не на ARM? Я имею в виду, как я могу с его помощью работать над проектами iOS?
Дэн Розенстарк,
Во-первых, вам нужно создать файл FindAlignment.c как приложение для iOS и запустить его на устройстве (а не на симуляторе). Затем скопируйте результат в новый блок #elif перед #else в строке 172 в JAValueToString.m. Если это не сработает, потребуется дополнительная отладка. Я не могу этого сделать, так как не участвую в программе iOS.
Jens Ayton
3
Также стоит отметить, что NSStringFromCGRect () тоже существует.
djskinner
24

point.x - это число с плавающей запятой, поэтому вы должны использовать:

NSLog(@"x: %f", point.x);
Филипп Лейберт
источник
9

Самый простой способ зарегистрировать CGPointзначение - использовать NSValueкласс, поскольку он предоставит вам все соответствующие значения, отформатированные для консоли. Делается это так:

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

Вы также можете использовать методы +valueWithCGRectи, когда пытаетесь регистрировать, скажем, свойства ( ) или ( ) файла .+valueWithCGSizeNSValueframeCGRectsizeCGSizeUIView

Натан де Врис
источник
0

point.x это число с плавающей запятой, поэтому вы должны кодировать следующим образом:

NSLog(@"%@",[NSString StringWithFormat:@"%f",point.x]);
Арун
источник
Если вы хотите использовать значение String, вы просто используете это !!
4
Вы делаете ненужную строку формата в строке формата. Подходы Филиппа и Арумана намного проще, и они дают точно такие же результаты.
Брэд Ларсон
0

использование:

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

Вы также можете использовать NSString для следующей информации:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

Акс
источник