সিজিপয়েন্ট ডেটা সহ এনএসলগ


93

আমার কাছে একটি সিজিপিয়েন্ট রয়েছে যার নাম পয়েন্ট রয়েছে যা স্পর্শের জন্য দেওয়া হচ্ছে:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

আমি আমার কনসোল লগ এ এক্স স্থানাঙ্ক মান পেতে চাই:

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

যখন আমি এটি ব্যবহার করি, এর জন্য লগ আউটপুটটি হ'ল:

এক্স: (নাল)

আমি যাচাই করেছি যে বিন্দুটি ডিবাগার এবং পরিবর্তনশীল ঘড়ি ব্যবহার করে যখন ডাকা হয় তখন নকল হয় না।

কোন সাহায্য প্রশংসা,

ধন্যবাদ // :)

উত্তর:


259

আসলে, লগ করার আসলতম সহজ উপায় CGPointহ'ল:

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

ডেস্কটপটি কোকো সমতুল্য NSStringFromPoint()।


এটি আরও ভাল। প্রথম উত্তরটি সবচেয়ে সহজ ও হালকা ওজনের উপায়। তবে এটি সিজিপয়েন্ট থেকে আমার এক সেট এবং এক্স উভয়ই পায়। দুর্দান্ত :) দুর্দান্ত সরঞ্জাম :)
— স্প্যানকি

স্ট্যাকওভারফ্লো যেহেতু আমার আরএসএস ফিডে এই প্রশ্নটি পুনরায় প্রকাশের উপযুক্ত বলে মনে হয়েছে, তাই আমি আমার সাধারণ সমাধানটিও ফুটিয়ে তুলতে পারি: jens.ayton.se/blag/almost-elegant-cave-man-debugging যা আপনাকে যেতে JA_DUMP(point);এবং "পয়েন্ট = get" পেতে দেয় 43, 96 format "বিন্যাস কোড সম্পর্কে চিন্তা না করে লগইন করেছেন।
— জেনস অ্যাটন

আমি আপনার লাইব কীভাবে ব্যবহার করব যেহেতু এটি আই 386 তে সংকলিত হয়েছে কিন্তু এআরএম-তে নয়? মানে, আমি কীভাবে এটি ব্যবহার করে আইওএস প্রকল্পগুলিতে কাজ করতে পারি?
— ড্যান রোজনস্টার্ক

প্রথমত, আপনাকে ফাইন্ডএলাইনমেন্ট.সি ফাইলটি আইওএস অ্যাপ হিসাবে তৈরি করতে হবে এবং এটি কোনও ডিভাইসে চালানো দরকার (সিমুলেটর নয়)। তারপরে, JAValueToString.m এর 172 লাইনে #else এর আগে একটি নতুন # বেল্ট ব্লকে ফলাফলটি অনুলিপি করুন। যদি এটি কাজ না করে, অতিরিক্ত ডিবাগিংয়ের প্রয়োজন হবে। আমি আইওএস প্রোগ্রামে নেই বলে আমি এটি করতে পারি না।
— জেনস অ্যাটন

4
এছাড়াও লক্ষণীয় যে এনএসএসটিংফ্রমসিজিআরেক্ট () খুব বিদ্যমান।
— ডিজেস্কিনার

24

পয়েন্ট.এক্স একটি ভাসমান পয়েন্ট সংখ্যা, সুতরাং আপনার ব্যবহার করা উচিত:

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

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

ব্যবহার:

এনএসএলগ (@ "% @", এনএসএসস্ট্রিংফ্রোমসিজিপয়েন্ট (পয়েন্ট));

আপনি নিম্নলিখিত তথ্যের জন্য এনএসএস স্ট্রিং ব্যবহার করতে পারেন:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.