ฉันต้องการที่จะสามารถแก้ปัญหาโครงสร้าง C โดยไม่ต้องพิมพ์ทุกคุณสมบัติที่พวกเขาประกอบด้วย
เช่นฉันต้องการที่จะสามารถทำอะไรเช่นนี้:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
เห็นได้ชัดว่า '% @' ไม่ทำงานดังนั้นคำถาม
ฉันต้องการที่จะสามารถแก้ปัญหาโครงสร้าง C โดยไม่ต้องพิมพ์ทุกคุณสมบัติที่พวกเขาประกอบด้วย
เช่นฉันต้องการที่จะสามารถทำอะไรเช่นนี้:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
เห็นได้ชัดว่า '% @' ไม่ทำงานดังนั้นคำถาม
คำตอบ:
คุณสามารถลองสิ่งนี้:
NSLog(@"%@", NSStringFromCGPoint(cgPoint));
มีฟังก์ชั่นมากมายจาก UIKitที่แปลงโครงสร้าง CG ต่าง ๆ เป็นNSString
s เหตุผลที่มันไม่ทำงานเป็นเพราะ%@
หมายถึงวัตถุ A CGPoint
คือโครงสร้าง C (และเป็นCGRect
s และCGSize
s)
NSPoint
NSStringFromPoint
ตัวอย่างเช่น:NSStringFromPoint(NSPointFromCGPoint(point))
มีฟังก์ชั่นบางอย่างเช่น:
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
ตัวอย่าง:
NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
NSLog(@"%@", CGRectCreateDictionaryRepresentation(rect));
ฉันใช้แมโครต่อไปนี้เพื่อช่วยฉันด้วย NSRect:
#define LogRect(RECT) NSLog(@"%s: (%0.0f, %0.0f) %0.0f x %0.0f",
#RECT, RECT.origin.x, RECT.origin.y, RECT.size.width, RECT.size.height)
คุณสามารถทำสิ่งที่คล้ายกับ CGPoint ได้:
@define LogCGPoint(POINT) NSLog(@"%s: (%0.0f, %0.0f)",
#POINT POINT.x, POINT.y);
ใช้มันดังต่อไปนี้:
LogCGPoint(cgPoint);
จะผลิตดังต่อไปนี้:
cgPoint: (100, 200)
คุณสามารถใช้NSValue
สำหรับสิ่งนี้ NSValueวัตถุเป็นภาชนะง่ายสำหรับ C เดียวหรือ Objective-C รายการข้อมูล มันสามารถเก็บสเกลาร์ประเภทใดก็ได้เช่น int, float และ char รวมถึงพอยน์เตอร์โครงสร้างและรหัสวัตถุ
ตัวอย่าง:
CGPoint cgPoint = CGPointMake(10,30);
NSLog(@"%@",[NSValue valueWithCGPoint:cgPoint]);
เอาท์พุท: NSPoint: {10, 30}
หวังว่ามันจะช่วยคุณ
เนื่องจาก RSS ที่ใช้งานไม่ได้ของ Stack Overflow เพิ่งฟื้นคืนชีพคำถามนี้ให้ฉันนี่เป็นวิธีแก้ปัญหาทั่วไปของฉัน: JAValueToString
สิ่งนี้ช่วยให้คุณเขียนJA_DUMP(cgPoint)
และcgPoint = {0, 0}
เข้าสู่ระบบได้
ใช่คุณสามารถใช้ฟังก์ชั่นการร้องดังต่อไปนี้ก่อนอื่นคุณต้องแปลงโครงสร้าง CGPoint เป็นสตริงดูตัวอย่าง
1) NSStringFromCGPoint,
2) NSStringFromCGSize,
3) NSStringFromCGRect,
4) NSStringFromCGAffineTransform,
5) NSStringFromUIEdgeInsets,
ตัวอย่างเช่น:
1) NSLog(@"NSStringFromCGPoint = %@", NSStringFromCGRect(cgPointValue));
แบบนี้...
NSLog(@"%@",CGRectCreateDictionaryRepresentation(rect));