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 // :)

Spanky
sumber

Jawaban:

259

Sebenarnya, cara termudah untuk membuat log CGPointadalah:

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

Kakao desktop yang setara adalah NSStringFromPoint().

Jens Ayton
sumber
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);
Philippe Leybaert
sumber
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

Nathan de Vries
sumber
1

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

Nicki
sumber
0

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

NSLog(@"%@",[NSString StringWithFormat:@"%f",point.x]);
Arun
sumber
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

Aks
sumber