NSLog พร้อมข้อมูล CGPoint


93

ฉันมี CGPoint ที่เรียกว่าจุดที่ถูกกำหนดให้สัมผัส:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

ฉันต้องการรับค่าพิกัด x ในบันทึกคอนโซลของฉัน:

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

เมื่อฉันใช้สิ่งนี้เอาต์พุตบันทึกสำหรับสิ่งนี้คือ:

x: (ว่าง)

ฉันตรวจสอบแล้วว่าจุดนั้นไม่เป็นโมฆะเมื่อสิ่งนี้ถูกเรียกโดยใช้ตัวแก้ไขข้อบกพร่องและนาฬิกาตัวแปร

ความช่วยเหลือใด ๆ ที่ชื่นชม

ขอบคุณ // :)

คำตอบ:


259

ที่จริงวิธีที่ง่ายที่สุดในการบันทึก a CGPointคือ:

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

NSStringFromPoint()สก์ท็อปโกโก้เทียบเท่า


นี้จะดียิ่งขึ้น คำตอบแรกคือวิธีที่ง่ายและน้ำหนักเบาที่สุด แต่นี่ทำให้ฉันได้ทั้ง x และ y จาก CGPoint ในชุดเดียว Nice :) Great tool :)
Spanky

เนื่องจาก StackOverflow เห็นว่าเหมาะสมที่จะแนะนำคำถามนี้อีกครั้งในฟีด RSS ของฉันฉันจึงอาจแมงดาวิธีแก้ปัญหาทั่วไปของฉัน: jens.ayton.se/blag/almost-elegant-cave-man-debuggingซึ่งช่วยให้คุณไปJA_DUMP(point);และรับ“ point = { 43, 96}” เข้าสู่ระบบโดยไม่ต้องกังวลเกี่ยวกับรหัสรูปแบบ
Jens Ayton

ฉันจะใช้ lib ของคุณได้อย่างไรเนื่องจากคอมไพล์บน I386 แต่ไม่ใช่บน ARM ฉันหมายความว่าฉันจะทำงานกับโปรเจ็กต์ iOS โดยใช้มันได้อย่างไร
Dan Rosenstark

ขั้นแรกคุณต้องสร้างไฟล์ FindAlignment.c เป็นแอป iOS และเรียกใช้บนอุปกรณ์ (ไม่ใช่โปรแกรมจำลอง) จากนั้นคัดลอกผลลัพธ์ลงในบล็อก #elif ใหม่ก่อน #else ที่บรรทัด 172 ใน JAValueToString.m หากไม่ได้ผลจำเป็นต้องมีการดีบักเพิ่มเติม ฉันไม่สามารถทำได้เนื่องจากฉันไม่ได้อยู่ในโปรแกรม iOS
Jens Ayton

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
คุณกำลังสร้างสตริงรูปแบบที่ไม่จำเป็นภายในสตริงรูปแบบ แนวทางของ Philippe และ Ahruman นั้นง่ายกว่ามากและได้ผลลัพธ์ที่เหมือนกันทุกประการ
Brad Larson

0

ใช้:

NSLog (@ "% @", NSStringFromCGPoint (จุด));

คุณยังสามารถใช้ NSString สำหรับข้อมูลต่อไปนี้:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.