CGPoint verileriyle NSLog


93

Dokunma atanan CGPoint adlı bir noktam var:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

X koordinat değerini konsol günlüğüme almak istiyorum:

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

Bunu kullandığımda, bunun için günlük çıktısı:

x: (boş)

Hata ayıklayıcı ve değişken izleme kullanılarak çağrıldığında noktanın boş olmadığını doğruladım.

Takdir edilen herhangi bir yardım,

Teşekkürler // :)

Yanıtlar:


259

Aslında, a kaydetmenin en kolay yolu CGPointşudur:

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

Masaüstü Kakao eşdeğeri NSStringFromPoint().


Bu daha da iyi. İlk cevap, en kolay ve en hafif ağırlık yoludur. Ama bu bana CGPoint'ten bir sette hem x hem de y'yi alıyor. Güzel :) Harika bir araç :)
— Spanky

StackOverflow, RSS beslememde bu soruyu yeniden gündeme getirmeyi uygun gördüğünden, genel çözümümü de pezevenk edebilirim: jens.ayton.se/blag/almost-elegant-cave-man-debugging , gidip JA_DUMP(point);“point = { 43, 96} ”format kodları konusunda endişelenmenize gerek kalmadan günlüğe kaydedildi.
— Jens Ayton

I386'da derlendiği ama ARM'de olmadığı için kütüphanenizi nasıl kullanırım? Demek istediğim, onu kullanarak iOS projelerinde nasıl çalışabilirim?
— Dan Rosenstark

Öncelikle, FindAlignment.c dosyasını bir iOS uygulaması olarak oluşturmanız ve bir cihazda (simülatörde değil) çalıştırmanız gerekir. Ardından, sonucu JAValueToString.m içindeki #else 172. satırdan önce yeni bir #elif bloğuna kopyalayın. Bu işe yaramazsa, ek hata ayıklama gerekecektir. İOS programında olmadığım için yapamıyorum.
— Jens Ayton

3
Ayrıca NSStringFromCGRect () 'in de var olduğunu belirtmek gerekir.
— djskinner

24

point.x bir kayan nokta numarasıdır, bu yüzden şunu kullanmalısınız:

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

9

Bir CGPointdeğeri kaydetmenin en basit yolu , NSValuesınıfı kullanmaktır , çünkü bu, size konsol için güzel bir şekilde biçimlendirilmiş ilgili tüm değerleri verecektir. Böyle yapılır:

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

Ayrıca , günlüğe kaydetmeye çalışırken +valueWithCGRectve +valueWithCGSizeyöntemlerini NSValue, örneğin, a öğesinin frame( CGRect) veya size( CGSize) özelliklerini de kullanabilirsiniz UIView.


1

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


0

point.x bir kayan nokta sayısıdır, bu nedenle şu şekilde kodlamalısınız:

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

Dize değeri istiyorsanız u sadece bunu kullanın !!

4
Bir biçim dizesi içinde gereksiz bir biçim dizesi yapıyorsunuz. Philippe ve Ahruman'ın yaklaşımları çok daha basit ve aynı sonuçları elde ediyorlar.
— Brad Larson

0

kullanım:

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

Aşağıdaki bilgiler için NSString'i de kullanabilirsiniz:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.