NSLog dengan data CGPoint


93

Saya memiliki CGPoint yang disebut titik yang diberi sentuhan:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

Saya ingin memasukkan nilai koordinat x ke dalam log konsol saya:

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

Ketika saya menggunakan ini, keluaran log untuk ini adalah:

x: (null)

Saya telah memverifikasi bahwa titik itu bukan null ketika ini dipanggil menggunakan debugger dan jam tangan variabel.

Setiap bantuan dihargai,

Terima kasih // :)

Jawaban:


259

Sebenarnya, cara termudah untuk membuat log CGPointadalah:

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

Kakao desktop yang setara adalah NSStringFromPoint().


Ini lebih baik. Jawaban pertama adalah cara bobot termudah dan teringan. Tapi ini membuat saya x dan y dari CGPoint dalam satu set. Bagus :) Alat yang hebat :)
— Spanky

Karena StackOverflow merasa perlu untuk memperkenalkan kembali pertanyaan ini di umpan RSS saya, saya mungkin juga merancang solusi umum saya: jens.ayton.se/blag/almost-elegant-cave-man-debugging yang memungkinkan Anda untuk pergi JA_DUMP(point);dan mendapatkan “point = { 43, 96} ”dicatat tanpa harus khawatir tentang kode format.
— Jens Ayton

Bagaimana cara menggunakan lib Anda karena lib terkompilasi di I386 tetapi tidak di ARM? Maksud saya, bagaimana saya bisa mengerjakan proyek iOS dengan menggunakannya?
— Dan Rosenstark

Pertama, Anda perlu membuat file FindAlignment.c sebagai aplikasi iOS dan menjalankannya di perangkat (bukan simulator). Kemudian, salin hasilnya ke dalam blok #elif baru sebelum #else pada baris 172 di JAValueToString.m. Jika ini tidak berhasil, debugging tambahan akan diperlukan. Saya tidak dapat melakukannya karena saya tidak menggunakan program iOS.
— Jens Ayton

3
Juga perlu diperhatikan bahwa NSStringFromCGRect () juga ada.
— djskinner

24

point.x adalah bilangan floating point, jadi Anda harus menggunakan:

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

9

Cara termudah untuk mencatat CGPointnilai adalah dengan menggunakan NSValuekelas, karena ini akan memberi Anda semua nilai relevan yang diformat dengan baik untuk konsol. Ini dilakukan seperti:

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

Anda juga dapat menggunakan metode +valueWithCGRectdan ketika Anda mencoba untuk membuat log, katakanlah, properti ( ) atau ( ) dari a .+valueWithCGSizeNSValueframeCGRectsizeCGSizeUIView


1

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


0

point.x adalah angka floating point jadi Anda harus membuat kode seperti ini:

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

Jika Anda ingin nilai String berarti Anda hanya menggunakan ini !!

4
Anda melakukan format string yang tidak perlu dalam string format. Pendekatan Philippe dan Ahruman jauh lebih sederhana dan mereka mencapai hasil yang persis sama.
— Brad Larson

0

gunakan:

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

Anda juga dapat menggunakan NSString untuk info berikut:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.