سؤال

وأنا جديدة على الهدف-C والتنمية فون، وأنا أحاول لتخزين القيم الفاصلة العائمة في NSMutableArray، ولكن عندما أفعل أحصل على خطأ قائلا "نوع يتنافى لحجة 1 من 'addObject". ما الخطأ الذي افعله؟ أحاول خلق مجموعة من الزوجي أستطيع أن إجراء عمليات حسابية الرياضيات معها.

هل كانت مفيدة؟

المحلول

وNSMutableArray يحمل سوى الأشياء، لذلك تريد مجموعة ليتم تحميلها مع كائنات NSNumber. إنشاء كل NSNumber لاجراء بك ضعف ثم إضافته إلى مجموعة الخاصة بك. ولعل شيئا من هذا القبيل.

NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *num = [NSNumber numberWithFloat:10.0f];
[array addObject:num];

وكرر حسب الحاجة.

نصائح أخرى

استخدم لNSNumber التفاف تعويم الخاص بك، لأن القاموس يحتاج كائن:

[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"];
/* or */
[myDictionary setObject:@0.2f forKey:@"theFloat"];

واسترجاعها عن طريق إرسال floatValue:

float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue];

ورمز لم تختبر.

ويمكنك لف العديد من أنواع البيانات الأخرى في NSNumber أيضا، تحقق في وثائق . هناك أيضا NSValue للحصول على بعض الهياكل مثل NSPoint وNSRect.

في الكاكاو، وNSMutableDictionary (وجميع المجموعات، حقا) تتطلب ككائنات القيم، وبالتالي لا يمكنك ببساطة تمرير أي نوع بيانات آخر. كما اقترح على حد سواء sjmulder وريان، يمكنك لف القيم العددية الخاصة بك في حالات NSNumber (لعدد) وNSValue للكائنات الأخرى.

إذا كنت يمثل رقم عشري، لشيء من هذا القبيل ثمن، أود أن أقترح أيضا تبحث في وباستخدام <لأ href = "https://developer.apple.com/iphone/library/documentation/Cocoa/Reference /Foundation/Classes/NSDecimalNumber_Class/Reference/Reference.html#//apple_ref/doc/uid/20000179-1904 "يختلط =" noreferrer "> NSDecimalNumber . ثم يمكنك تجنب العائمة قضايا نقطة عدم الدقة، والتي عموما يمكن استخدام وتخزين "قيمة" باعتبارها <لأ href = "https://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes /NSDecimalNumber_Class/Reference/Reference.html#//apple_ref/doc/uid/20000179-1904 "يختلط =" noreferrer "> NSDecimalNumber بدلا من ذلك لتمثيل ذلك مع بدائية في التعليمات البرمجية.

وعلى سبيل المثال:

// somewhere
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain];
NSMutableArray*  prices= [[NSMutableArray array] retain];

// ...

[prices addObject:price];
NSMutableArray *muArray = [[NSMutableArray alloc] init];
NSNumber *float = [NSNumber numberWithFloat:210.0f];
NSNumber *float1 = [NSNumber numberWithFloat:211.0f];
[muArray addObject:float];
[muArray addObject:float1];

NSlog(@"my array is--%@",muArray);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top