এনএসএসস্ট্রিং-এ কীভাবে রূপান্তর করবেন?


101

আমি একটি রূপান্তর করতে চাই int একটি থেকে NSStringউদ্দেশ্য সি

কিভাবে আমি এটি করতে পারব?

উত্তর:


147

আদিমরাশি @()অভিব্যক্তিতে বস্তুতে রূপান্তরিত হতে পারে । তাই সবচেয়ে কম পথ রুপান্তর হয় intকরতে NSNumberএবং স্ট্রিং উপস্থাপনা কুড়ান stringValueপদ্ধতি:

NSString *strValue = [@(myInt) stringValue];

অথবা

NSString *strValue = @(myInt).stringValue;

12
কিছুটা কম NSString *strValue = @(myInt).stringValue;
ভার্বোজ

@ ডিলসনসেলস কিছু কিছু বস্তুর কাছে নেই stringValueতবে সবগুলি রয়েছে description- তাই একটি ভাল অনুশীলন হিসাবে এটি ব্যবহারে অভ্যস্ত হওয়া ভাল description( NSNumberএটি করার জন্য এখানে কোনও চিন্তা করার দরকার নেই)। এটি চেষ্টা করুন ( descriptionতারিখটি মুদ্রণ করবে তবে stringValueক্র্যাশ হবে):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
ইসলাম প্র।

1
@IslamQ। @(myInt)একটি হল বাক্সযুক্ত অভিব্যক্তি জন্য [NSNumber numberWithInt:]এবং এটি সবসময় একটি NSNumber ফিরে আসবে যখন কোন int দেওয়া। [NSNumber stringValue]সর্বদা একটি এনএসএসস্ট্রিং ফিরিয়ে দেবে। আপনার মন্তব্যের কোডে, জোর করে (id)ingালাই করা এবং কোনও ভিন্ন ধরণের নির্ধারণ করা একটি পরিষ্কার প্রোগ্রামিং ভুল: আপনার কখনই এটি করা উচিত নয়। এটি কোনও পদ্ধতির সাঁতার কাটা এবং তারপরে সেই পদ্ধতিটি মূলত যা করছে তা না করে সে সম্পর্কে একটি যুক্তি তৈরি করার মতো।
সিউর

1
@IslamQ। ক্র্যাশ অপারেটর ( !) ব্যবহার না করে আপনার মন্তব্যটিকে সুইফটে রূপান্তর করার চেষ্টা করুন এবং আপনি বুঝতে পারবেন যে আপনি এটি উদ্দেশ্য-সি-তে ভুলভাবে করছেন doing যদি বস্তুটি testআপনি তৈরি করেননি, তবে এটি আপনার দায়িত্ব নয়। আপনি isKindOfClass:আপনার প্রাপ্ত সমস্ত প্যারামিটারের জন্য কল করার চেষ্টা করতে পারেন , তবে এটিও বোকা বানানো যেতে পারে (উদাহরণস্বরূপ এনএসবজেক্টের পরিবর্তে স্ট্রাক্ট পাস করে)। সুতরাং এটি করবেন না: কেবল প্রত্যাশিত প্রকারগুলি ডকুমেন্ট করুন।
সিউর

@ কেউর, অবশ্যই কোনও (id)বিষয়টিকে নিক্ষেপ করা একটি ভুল, এটি কেবলমাত্র সেই বিষয়টি ডেমো করার জন্য যে আইএমওর descriptionচেয়ে বেশি পছন্দ হয় stringValue(আমি ভুল হতে পারি, বছরের পর বছর ধরে ওবজিসিতে প্রোগ্রাম করা হয়নি)
ইসলাম প্রশ্ন

144
NSString *string = [NSString stringWithFormat:@"%d", theinteger];

@ তালিকা আপনি যখন আদিম প্রকারটি জানেন, তখন আমি ভাবছি যে আপনার কোড থেকে মধ্যবর্তী এনএসবারকে এড়িয়ে কিছুটা ওভারহেড থাকতে পারে কিনা? @(myInt)এটি একটি বক্সযুক্ত অভিব্যক্তি , এটি একটি এনএসএনবার দেয় returns
সিউর

37
int i = 25;
NSString *myString = [NSString stringWithFormat:@"%d",i];

এটি অনেক উপায়ে একটি।


2

যদি এই স্ট্রিংটি শেষ ব্যবহারকারীর কাছে উপস্থাপনের জন্য হয় তবে আপনার ব্যবহার করা উচিত NSNumberFormatter। এটি হাজার হাজার বিভাজক যুক্ত করবে এবং ব্যবহারকারীর জন্য স্থানীয়করণ সেটিংসকে সম্মান করবে:

NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];

মার্কিন যুক্তরাষ্ট্রে, উদাহরণস্বরূপ, এটি একটি স্ট্রিং তৈরি করবে 10,000, তবে জার্মানিতে, এটি হবে 10.000

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