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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.