सीजीलॉग डेटा के साथ NSLog


93

मेरे पास एक सीजीपीएन पॉइंट है जिसे एक स्पर्श सौंपा जा रहा है:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

मैं अपने कंसोल लॉग में x निर्देशांक मान प्राप्त करना चाहता हूं:

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

जब मैं इसका उपयोग करता हूं, तो इसके लिए लॉग आउटपुट है:

x: (अशक्त)

मैंने सत्यापित किया है कि यह डिबगर और वैरिएबल वॉच का उपयोग करते समय बिंदु शून्य नहीं है।

किसी भी मदद की सराहना की,

धन्यवाद // :)

जवाबों:


259

वास्तव में, लॉग इन करने का वास्तविक सबसे आसान तरीका CGPointहै:

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

डेस्कटॉप कोको समकक्ष है NSStringFromPoint()


यह और भी बेहतर है। पहला जवाब सबसे आसान और हल्का वजन तरीका है। लेकिन यह मुझे एक सेट में CGPoint से x और y दोनों मिलता है। नाइस :) ग्रेट टूल :)
स्पैकी

चूंकि StackOverflow ने मेरे RSS फ़ीड में इस प्रश्न को फिर से प्रस्तुत करने के लिए फिट देखा, इसलिए मैं अपने सामान्य समाधान को बेहतर बना सकता हूं: jens.ayton.se/blag/alAST-elegant-cave-man-debugging जो आपको जाने JA_DUMP(point);और "बिंदु = {प्राप्त करने के लिए कहते हैं। 43, 96} "प्रारूप कोड के बारे में चिंता किए बिना लॉग इन किया।
जेन्स एटन

I386 पर संकलित करने के बाद से मैं आपके lib का उपयोग कैसे करूं लेकिन ARM पर नहीं? मेरा मतलब है, मैं इसका उपयोग करके iOS परियोजनाओं पर कैसे काम कर सकता हूं?
डैन रोसेनस्टार्क

सबसे पहले, आपको FindAlignment.c फ़ाइल को एक iOS ऐप के रूप में बनाना होगा और इसे एक डिवाइस (सिम्युलेटर नहीं) पर चलाना होगा। फिर, परिणाम को JelalueToString.m में लाइन 172 पर #else से पहले एक नए #elif ब्लॉक में कॉपी करें। यदि यह काम नहीं करता है, तो अतिरिक्त डीबगिंग की आवश्यकता होगी। जब से मैं iOS प्रोग्राम में नहीं हूं, मैं ऐसा नहीं कर सकता।
जेन्स आयटन

3
यह भी ध्यान देने योग्य है कि NSStringFromCGRect () भी मौजूद है।
djskinner


9

CGPointमान को लॉग करने का सबसे सरल तरीका NSValueवर्ग का उपयोग करना है , क्योंकि यह आपको कंसोल के लिए सभी प्रासंगिक मानों को अच्छी तरह से स्वरूपित करेगा। यह ऐसा किया जाता है:

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

तुम भी उपयोग कर सकते हैं +valueWithCGRectऔर +valueWithCGSizeके तरीकों NSValueजब आप लॉग ऑन कहते हैं, की कोशिश कर रहे frame( CGRect) या size( CGSizeएक) के गुण UIView



0

point.x एक फ्लोटिंग पॉइंट नंबर है, जिससे आपको इस तरह कोड करना चाहिए:

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

यदि आप स्ट्रिंग का मतलब करना चाहते हैं, तो यू सिर्फ इस का उपयोग करें !!

4
आप एक प्रारूप स्ट्रिंग के भीतर एक अनावश्यक प्रारूप स्ट्रिंग कर रहे हैं। फिलिप और अहरामैन के दृष्टिकोण बहुत सरल हैं और वे ठीक उसी परिणाम को प्राप्त करते हैं।
ब्रैड लार्सन

0

उपयोग :

NSLog (@ "% @", NSStringFromCGPoint (बिंदु));

आप निम्नलिखित जानकारी के लिए NSString का उपयोग कर सकते हैं:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffine
ट्रांसफॉर्मर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.