আমি কীভাবে এনএসএনمبر বৃদ্ধি করব?
অর্থাৎ মাইএনএস নাম্বার ++
আমি কীভাবে এনএসএনمبر বৃদ্ধি করব?
অর্থাৎ মাইএনএস নাম্বার ++
উত্তর:
আপডেট: এফওয়াইআই, আমি ব্যক্তিগতভাবে বোল্টক্লক এবং ডার্কডাস্টসের এক-লাইনের উত্তরগুলি আরও ভাল পছন্দ করি। এগুলি আরও সংক্ষিপ্ত, এবং অতিরিক্ত ভেরিয়েবলের প্রয়োজন হয় না।
একটি ইনক্রিমেন্ট করার জন্য NSNumber, আপনাকে তার মান, বাড়ানো এবং এটি একটি নতুনতে সঞ্চয় করতে হবে NSNumber।
উদাহরণস্বরূপ, NSNumberএকটি পূর্ণসংখ্যা ধরে রাখার জন্য :
NSNumber *number = [NSNumber numberWithInt:...];
int value = [number intValue];
number = [NSNumber numberWithInt:value + 1];
অথবা NSNumberএকটি ভাসমান-পয়েন্ট নম্বর ধারণের জন্য :
NSNumber *number = [NSNumber numberWithDouble:...];
double value = [number doubleValue];
number = [NSNumber numberWithDouble:value + 1.0];
...দাঁড়ায়? একটি ছদ্ম-কোড রেফারেন্স ঠিক আছে? ...
...কোনও সংখ্যার জন্য কেবল একটি স্থানধারক।
যে কেউ এক্সকোডের সর্বশেষতম সংস্করণটি ব্যবহার করছেন (এটি 4.4.1, এসডিকে 5.1 হিসাবে লিখছেন), অবজেক্ট লিটারাল ব্যবহার করে আপনি কোডটি আরও কিছুটা সাফ করতে পারেন ...
NSNumber *x = @(1);
x = @([x intValue] + 1);
// x = 2
সহজ ক্রিয়াকলাপ করার জন্য বক্সিং এবং সমস্ত কিছু আনবক্সিংয়ের সাথে মোকাবিলা করার জন্য এখনও এক ধরনের বেদনা, তবে এটি আরও ভাল হচ্ছে বা কমপক্ষে সংক্ষিপ্ত হয়ে উঠছে।
এগুলি সব একসাথে রাখুন এবং আপনার কাছে রয়েছে:
myNSNumber = @(myNSNumber.intValue + 1);
NSNumberবস্তুগুলি অপরিবর্তনীয় (?)
আমি ডট এক্সপ্রেশন পছন্দ করি কারণ এটি আরও সংক্ষিপ্ত এবং এজন্য আইওএস প্রথম স্থানে এটি সমর্থন করে:
myNSNumber = [NSNumber numberWithInt:myNSNumber.intValue + 1];
আপনি যদি এটি অবিচ্ছেদ্য মান সঞ্চয় করতে ব্যবহার করেন:
myNSNumber = @(myNSNumber.longLongValue + 1);
ভাসমান পয়েন্ট স্টাফগুলির জন্য সংক্ষিপ্ত উত্তরটি নিম্নোক্ত, তবে এটি করা একটি খারাপ ধারণা, আপনি যথাযথতা হ্রাস করবেন এবং আপনি যদি পরে [মাইএনএস নাম্বার ইক্যুয়াল: @ (4.5)] এর মতো কোনও ধরণের তুলনা করছেন তবে আপনি অবাক হতে পারেন :
myNSNumber = @(myNSNumber.floatValue + 1);
অবজেক্টিক-সি-তে বস্তু হিসাবে প্রতিনিধিত্বকারী ভাসমান পয়েন্ট সংখ্যাগুলিতে আপনার যদি গণিত করা প্রয়োজন (যেমন আপনাকে যদি অ্যারে, অভিধান ইত্যাদিতে এগুলি রাখার প্রয়োজন হয়) আপনার ব্যবহার করা উচিত NSDecimalNumber।
ভবিষ্যতের ব্যবহার সহজ করতে একটি বিভাগ ব্যবহার করুন। এখানে একটি প্রাথমিক ধারণা।
- (void)incrementIntBy:(int)ammount {
self = [NSNumber numberWithInt:(self.intValue + ammount)];
}
এই প্রশ্নের উত্তরে প্রচুর ভাল তথ্য। আমি আমার কোডে নির্বাচিত উত্তরটি ব্যবহার করেছি এবং এটি কার্যকর হয়েছে। তারপরে আমি বাকি পোস্টগুলি পড়তে শুরু করি এবং কোডটি অনেক সহজ করে দিয়েছি। এক্সকোড 5-এ প্রবর্তিত স্বরলিপি পরিবর্তনের সাথে আপনি পরিচিত না হলে এটি পড়া কিছুটা শক্ত, তবে এটি অনেক পরিষ্কার er আমি সম্ভবত এটি কেবল একটি লাইন তৈরি করতে পারি, তবে তারপরে আমি কী করছি তা নির্ধারণ করা কিছুটা শক্ত hard
আমি একটি অভিধানে একটি এনএস নাম্বার সংরক্ষণ করছি এবং আমি এটি বৃদ্ধি করতে চাই। আমি এটি পেয়েছি, এটিকে একটি ইনটে রূপান্তর করি, এনএসএনম্বারে রূপান্তর করার সময় এটিকে বৃদ্ধি করি, তারপরে আবার অভিধানে রাখি put
পুরাতন কোড
NSNumber *correct = [scoringDictionary objectForKey:@"correct"];
int correctValue = [correct intValue];
correct = [NSNumber numberWithInt:correctValue + 1];
[scoringDictionary removeObjectForKey:@"correct"];
scoringDictionary[@"correct"] = correct;
নতুন কোড
NSNumber *correct = [scoringDictionary objectForKey:@"correct"];
scoringDictionary[@"correct"] = @(correct.intValue + 1);
NSNumber *, সর্বদা আদিম ধরণেরগুলি যথেষ্ট কিনা তা পরীক্ষা করে দেখুন।