NSLogとCGPointデータ


93

タッチが割り当てられているポイントと呼ばれるCGPointがあります。

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

x座標値をコンソールログに取得します。

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

これを使用すると、このログ出力は次のようになります。

x:(null)

これがデバッガーと変数ウォッチを使用して呼び出されたときに、ポイントがnullではないことを確認しました。

助けてくれてありがとう、

ありがとう// :)

回答:


259

実際、ログを記録する最も簡単な方法CGPointは次のとおりです。

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

デスクトップのCocoaに相当するものはNSStringFromPoint()です。


これはさらに良いです。最初の答えは、最も簡単で軽量な方法です。しかし、これにより、CGPointからxとyの両方を1つのセットで取得できます。ニース:)素晴らしいツール:)
Spanky

StackOverflowは、RSSフィードでこの質問を再導入するのに適していると考えたので、私の一般的な解決策であるjens.ayton.se/blag/almost-elegant-cave-man-debugging導入して、JA_DUMP(point);「point = { 43、96}」は、フォーマットコードを気にすることなく記録されます。
Jens Ayton、2010

libはI386でコンパイルされますが、ARMではコンパイルされないため、どのように使用しますか?つまり、それを使用してiOSプロジェクトで作業するにはどうすればよいですか?
Dan Rosenstark、2010年

まず、iOSアプリとしてFindAlignment.cファイルをビルドし、デバイス(シミュレーターではなく)で実行する必要があります。次に、JAValueToString.mの172行目の#elseの前の新しい#elifブロックに結果をコピーします。これが機能しない場合は、追加のデバッグが必要になります。私はiOSプログラムに参加していないので、それはできません。
Jens Ayton、2011年

3
NSStringFromCGRect()も存在することにも注意してください。
djskinner


9

CGPoint値をログに記録する最も簡単な方法は、NSValueクラスを使用することです。これにより、コンソールに適切にフォーマットされたすべての関連値が得られます。それはそのように行われます:

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

たとえば、の()または()プロパティをログに記録するときにの+valueWithCGRectおよび+valueWithCGSizeメソッドを使用することもNSValueできます。frameCGRectsizeCGSizeUIView



0

point.x は浮動小数点数なので、次のようにコーディングする必要があります。

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

文字列値にしたい場合は、これを使用するだけです!!

4
書式文字列内で不要な書式文字列を実行しています。フィリップとアルマンのアプローチははるかに単純で、まったく同じ結果が得られます。
ブラッド・ラーソン

0

使用する :

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

次の情報にNSStringを使用することもできます。

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.