CGPoint 데이터가있는 NSLog


93

터치가 할당 된 포인트라는 CGPoint가 있습니다.

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

콘솔 로그에 x 좌표 값을 가져오고 싶습니다.

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

이것을 사용할 때 이에 대한 로그 출력은 다음과 같습니다.

x : (null)

디버거와 변수 시계를 사용하여 호출 할 때 포인트가 null이 아님을 확인했습니다.

도움을 주시면 감사하겠습니다.

감사 // :)

답변:


259

실제로 a를 기록하는 가장 쉬운 방법 CGPoint은 다음과 같습니다.

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

데스크톱 Cocoa에 해당하는 것은 NSStringFromPoint().


이것은 더 좋습니다. 첫 번째 대답은 가장 쉽고 가벼운 방법입니다. 그러나 이것은 한 세트의 CGPoint에서 x와 y를 모두 얻습니다. 니스 :) 훌륭한 도구 :)
Spanky

StackOverflow가 내 RSS 피드에이 질문을 다시 도입하는 데 적합하다고 생각했기 때문에 일반적인 솔루션 인 jens.ayton.se/blag/almost-elegant-cave-man-debugging 을 사용하여 JA_DUMP(point);"point = {"를 얻을 수 있습니다. 43, 96}”은 형식 코드에 대해 걱정할 필요없이 기록됩니다.
Jens Ayton

I386에서는 컴파일되지만 ARM에서는 컴파일되지 않으므로 lib를 어떻게 사용합니까? 내 말은, 그것을 사용하여 iOS 프로젝트에서 어떻게 작업 할 수 있습니까?
Dan Rosenstark 2010

먼저 FindAlignment.c 파일을 iOS 앱으로 빌드하고 시뮬레이터가 아닌 장치에서 실행해야합니다. 그런 다음 JAValueToString.m의 172 행에서 #else 앞에있는 새 #elif 블록에 결과를 복사합니다. 이것이 작동하지 않으면 추가 디버깅이 필요합니다. iOS 프로그램이 아니기 때문에 할 수 없습니다.
Jens Ayton

3
NSStringFromCGRect ()도 존재한다는 점도 주목할 가치가 있습니다.
djskinner


9

CGPoint값 을 기록하는 가장 간단한 방법 은 NSValue클래스 를 사용하는 것입니다. 콘솔에 맞게 형식이 지정된 모든 관련 값을 제공하기 때문입니다. 다음과 같이 완료됩니다.

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

예를 들어 .NET Framework의 ( ) 또는 ( ) 속성 을 기록하려고 할 때 +valueWithCGRect+valueWithCGSize메서드를 사용할 수도 있습니다 .NSValueframeCGRectsizeCGSizeUIView



0

point.x 부동 소수점 숫자이므로 다음과 같이 코딩해야합니다.

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

문자열 값을 원한다면 이것을 사용하십시오 !!

4
형식 문자열 내에서 불필요한 형식 문자열을 수행하고 있습니다. Philippe와 Ahruman의 접근 방식은 훨씬 간단하며 똑같은 결과를 얻습니다.
Brad Larson

0

사용하다 :

NSLog (@ "% @", NSStringFromCGPoint (포인트));

다음 정보에 NSString을 사용할 수도 있습니다.

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.