কীভাবে আমি এনএসআইন্টারকে এনএসএসআরটি ডেটাটাইপে রূপান্তর করব?


137

কীভাবে একজন ডেটাটাইপে রূপান্তর NSIntegerকরতে পারে NSString?

আমি নিম্নলিখিতটি চেষ্টা করেছিলাম, যেখানে মাসটি একটি NSInteger:

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];

উত্তর:


267

এনএসআইন্টিজার্স বস্তু নয়, আপনি longবর্তমান definition৪-বিট আর্কিটেকচারের সংজ্ঞাটির সাথে মেলে যাতে তাদের এটিকে কাস্ট করেন :

NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];


11
আমি এটি চেষ্টা করেছিলাম, কিন্তু আমি একটি সতর্কতা পেয়েছিলাম Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')অ্যাপল ডক্স অনুযায়ী পরিবর্তে , আমি সাথে ছিলNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
স্টিভেন

8
নোট করুন যে A৪-বিট প্রসেসরের উপর যেমন নতুন এ 7 চিপ, আপনার অ্যাপ্লিকেশনটি যদি -৪-বিটের জন্য সংকলিত হয় তবে কোনও এনএসআইঞ্জার আসলে একটি দীর্ঘ, কোনও অন্তর্নিহিত নয়। Castালাই করা, (পূর্ববর্তী) মাস জেনেরিক ক্ষেত্রে 64-বিট প্ল্যাটফর্মগুলিতে ধ্বংসাত্মক হবে। যদি অ্যাপল প্ল্যাটফর্মগুলি একচেটিয়াভাবে লক্ষ্যবস্তু করা হয়, তবে আলেকসি কোজেভনিকোভের উত্তর হিসাবে যেমন উদ্দেশ্য-সি পথটিকে পছন্দ করুন বা এর মতো এবং দীর্ঘ উভয় ক্ষেত্রেই কাজ করবে - যেমন দীর্ঘ ;-) একটি উদাহরণ, যদিও স্বাক্ষরযুক্ত (অর্থ-নেতিবাচক) অ্যান্ড্রিয়াসে রয়েছে লে এর উত্তর।
লুই সেন্ট

1
@ স্টেভেন আমি বর্তমানটি আরও প্রয়োগযোগ্য, পৃষ্ঠতল এবং স্বীকৃত হওয়ার জন্য উত্তরটি মুছে ফেলার চেষ্টা করেছি, তবে দৃশ্যত, গৃহীত উত্তরগুলি মুছতে পারে না cannot সতর্কতাগুলি ট্রিগার না করে এমন দ্রুত সমাধান সন্ধানকারী লোকদের জন্য যতটা দরকারী তথ্য সরবরাহ করার জন্য আমি অন্তত এর বিষয়বস্তুগুলি সামঞ্জস্য করার চেষ্টা করেছি।
luvieere

@ লভিয়েয়ার অ্যাপলের ডকুমেন্টেশনটি কীভাবে এনএসআইন্টেজারকে বিন্যাসের স্ট্রিংগুলিতে চিকিত্সা করতে পারে তা স্পষ্টভাবে ব্যাখ্যা করে। এই পরামর্শটি অনুসরণ করতে আপনার উত্তরটি আপডেট করা উচিত।
নিকোলাই রুহে

2
[@(integerValue) stringValue]একটি পরিষ্কার পদ্ধতির হয়।
জোয়ারায়ার


76

আধুনিক উদ্দেশ্য-সি

একটি একটি NSIntegerপদ্ধতি আছে stringValueযা এমনকি আক্ষরিক সহ ব্যবহার করা যেতে পারে

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];

খুব সহজ. তাই না?

দ্রুতগতি

var integerAsString = String(integer)

8

%zd%tu32-বিট এবং 64-বিট উভয় আর্কিটেকচারের জন্য কোনও ক্যাসেট এবং কোনও সতর্কতা ছাড়াই এনএসআইন্টিজারদের জন্য (এনএসইউইন্টিজারের জন্য) কাজ করে । কেন এটি " প্রস্তাবিত উপায় " নয় তা আমার কোনও ধারণা নেই ।

NSString *string = [NSString stringWithFormat:@"%zd", month];

আপনি যদি আগ্রহী হন তবে কেন এটি কাজ করে এই প্রশ্নটি


5

করার সহজ উপায়:

NSInteger value = x;
NSString *string = [@(value) stringValue];

এখানে @(value)প্রদত্ত NSIntegerকোনও NSNumberবস্তুকে রূপান্তর করে যার জন্য আপনি প্রয়োজনীয় ফাংশনটি কল করতে পারেন stringValue,।


2

এর জন্য সহায়তার সাথে সংকলন করার সময় arm64, এটি কোনও সতর্কতা তৈরি করে না:

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

1

আপনিও চেষ্টা করতে পারেন:

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];

0

উত্তরটি দেওয়া হয়েছে তবে মনে করুন যে কোনও পরিস্থিতির জন্য এটি এনএসআইন্টার থেকে স্ট্রিং পাওয়ার আকর্ষণীয় উপায়ও হবে

NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];

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