ฉันพยายามบันทึก (พิมพ์) ค่าของวัตถุ CGSize ดังนี้:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
มีอะไรผิดปกติในรหัสนี้; แอปของฉันขัดข้องในขณะที่การควบคุมมาถึงคำสั่ง NSLog
ขอบคุณปรา
ฉันพยายามบันทึก (พิมพ์) ค่าของวัตถุ CGSize ดังนี้:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
มีอะไรผิดปกติในรหัสนี้; แอปของฉันขัดข้องในขณะที่การควบคุมมาถึงคำสั่ง NSLog
ขอบคุณปรา
คำตอบ:
คุณสามารถเรียกสิ่งต่อไปนี้เพื่อพิมพ์ค่าที่คุณต้องการ:
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
ลองทำตามนี้
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
ความผิดพลาดเกิดขึ้นเนื่องจากsizeOfTab
ไม่ได้อยู่ในNSString
รูปแบบ
sizeOfTab
ไม่ใช่วัตถุ (วัตถุใด ๆ จะใช้งานได้ไม่ใช่แค่ a NSString
) CGSize
เป็นโครงสร้าง
self.frame.size.width/tabCount
ในฐานะที่เป็นjoeblow กล่าวถึง ( ผมสังเกตเห็นหลังจากการพิมพ์และการจัดรูปแบบคำตอบนี้ ) นอกจากนี้ยังมีฟังก์ชั่น UIKit ที่NSStringFromCGSize()
สำหรับการพิมพ์สวยและผกผันของตนCGSizeFromString()
สำหรับการสร้างCGSize
struct จากNSString
วัตถุ
Apple จัดทำเอกสารstring
พารามิเตอร์ดังนี้:CGSizeFromString(
string
)
สตริงที่มีเนื้อหาอยู่ในรูปแบบ "{ w , h }" โดยที่wคือความกว้างและhคือความสูง ค่าwและhอาจเป็นค่าจำนวนเต็มหรือค่าลอย ตัวอย่างของสตริงที่ถูกต้องคือ @ "{3.0,2.5}" สตริงไม่ได้รับการแปลเป็นภาษาท้องถิ่นดังนั้นรายการต่างๆจะถูกคั่นด้วยลูกน้ำเสมอ
CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
Pretty printed size: {320, 568}
% @ หมายความว่าคุณกำลังพยายามแทรกสตริง CGSize ไม่ใช่สตริงและไม่สามารถแปลงเป็นสตริงโดยอัตโนมัติได้ นั่นเป็นสาเหตุที่แอปของคุณขัดข้อง แต่คุณต้องบันทึกคุณสมบัติแต่ละรายการแยกกันเช่น
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
f% ถูกนำมาใช้เพราะความกว้างและความสูงคุณสมบัติเป็นชนิดที่ลอย
สำหรับการแปลงรูปแบบอื่น ๆ โปรดดูเอกสาร: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html
CGSize
มี memebers CGFloat
กว้างและความสูงซึ่งเป็นประเภท คุณสามารถพิมพ์ได้โดยใช้สิ่งต่อไปนี้
NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
ที่นี่ self.view คือมุมมองของ UIView Class คุณสามารถพิมพ์เฟรมใดก็ได้ด้วยบันทึกนี้
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));