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.