NSLog với dữ liệu CGPoint


93

Tôi có một điểm được gọi là CGPoint đang được chỉ định một liên lạc:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

Tôi muốn nhận giá trị tọa độ x vào nhật ký bảng điều khiển của mình:

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

Khi tôi sử dụng điều này, đầu ra nhật ký cho điều này là:

x: (null)

Tôi đã xác minh rằng điểm không rỗng khi điều này được gọi bằng cách sử dụng trình gỡ lỗi và đồng hồ biến.

Mọi sự trợ giúp được đánh giá cao,

Cảm ơn // :)

Câu trả lời:


259

Trên thực tế, cách thực sự dễ dàng nhất để ghi lại a CGPointlà:

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

Tương đương với Cocoa để bàn là NSStringFromPoint().


Điều này thậm chí còn tốt hơn. Câu trả lời đầu tiên là cách dễ nhất và nhẹ nhất. Nhưng điều này giúp tôi có cả x và y từ CGPoint trong một tập hợp. Đẹp :) Công cụ tuyệt vời :)
Spanky

Vì StackOverflow thấy phù hợp để giới thiệu lại câu hỏi này trong nguồn cấp dữ liệu RSS của tôi, nên tôi cũng có thể đưa ra giải pháp chung của mình: jens.ayton.se/blag/almost-elegant-cave-man-debugging , cho phép bạn truy cập JA_DUMP(point);và lấy “point = { 43, 96} ”được ghi mà không phải lo lắng về mã định dạng.
Jens Ayton

Làm cách nào để sử dụng lib của bạn vì nó biên dịch trên I386 nhưng không phải trên ARM? Ý tôi là, làm thế nào tôi có thể làm việc trên các dự án iOS bằng cách sử dụng nó?
Dan Rosenstark

Trước tiên, bạn cần tạo tệp FindAlignment.c dưới dạng ứng dụng iOS và chạy nó trên thiết bị (không phải trình mô phỏng). Sau đó, sao chép kết quả vào một khối #elif mới trước #else ở dòng 172 trong JAValueToString.m. Nếu điều này không hiệu quả, bạn sẽ phải gỡ lỗi bổ sung. Tôi không thể làm điều đó vì tôi không sử dụng chương trình iOS.
Jens Ayton

3
Cũng cần lưu ý rằng NSStringFromCGRect () cũng tồn tại.
djskinner

24

point.x là một số dấu phẩy động, vì vậy bạn nên sử dụng:

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

9

Cách đơn giản nhất để ghi một CGPointgiá trị là sử dụng NSValuelớp, vì nó sẽ cung cấp cho bạn tất cả các giá trị liên quan được định dạng độc đáo cho bảng điều khiển. Nó được thực hiện như vậy:

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

Bạn cũng có thể sử dụng các phương thức +valueWithCGRectvà khi bạn đang cố gắng ghi lại các thuộc tính ( ) hoặc ( ) của a .+valueWithCGSizeNSValueframeCGRectsizeCGSizeUIView



0

point.x là một số dấu phẩy động, vì vậy bạn nên viết mã như thế này:

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

Nếu bạn muốn giá trị chuỗi có nghĩa là bạn chỉ cần sử dụng cái này !!

4
Bạn đang thực hiện một chuỗi định dạng không cần thiết trong một chuỗi định dạng. Phương pháp của Philippe và Ahruman đơn giản hơn nhiều và chúng đạt được kết quả chính xác như nhau.
Brad Larson

0

sử dụng :

NSLog (@ "% @", NSStringFromCGPoint (điểm));

Bạn cũng có thể sử dụng NSString để biết thông tin sau:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.