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


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.