سؤال

الكود الخاص بي يبدو مثل هذا

NSNumber *inputToNumber = [NSNumber numberWithFloat:[textField.text floatValue]];

القيمة من حقل النص هي في الواقع رقم هاتف.يتم تخزينه في NSNumber باعتباره (2.0)78966e+08 مزعجًا

كيف يمكنني الحصول على NSNumber لتخزينه كـ 0207896608؟

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

المحلول

ويستخدم التدوين العلمي في لغات الكمبيوتر قد والإخراج الافتراضي أعداد كبيرة جدا (أو صغيرة جدا). إذا كنت تريد أن يكون عدد الإخراج كما عشري، تحتاج إلى تحديد تنسيق الإخراج (تنفيذ يختلف حسب اللغة.)

وأيضا، julesjacobs هو الصحيح. يجب عدم استخدام تعويم لرقم الهاتف كما هو عرضة للأخطاء التقريب الثنائية. وسوف تستخدم INT أو STRING سيوفر لك الكثير من الصداع.

نصائح أخرى

أعتقد أن الفكرة الأساسية لتخزين رقم هاتف في NSNumber معيبة:

  • كيف يمكنك التمييز بين الأرقام التي تحتوي على 0 أو بدونها؟
  • كيف يتم تخزين أرقام الهواتف من الدول الأجنبية؟

سأستخدم NSString بدلاً من NSNumber.

وفقط لانه دعا عددا لا يعني "رقم الهاتف" هو رقم في نفس بمعنى "5" أو "بي" هي.

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

ونعتبر أن هناك أماكن في العالم حيث الأرقام لا يكون الرائد 0 وفيها عدد مع 0 الرائدة ليس هو نفس نفس العدد دون رائدة 0.

05843924 != 5843924

وحتى وقف كسولا مع أن الخارقة NSNumber وبناء الخاصة الطبقة هاتف رقم هاتفك.

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

01112223333
country code 0
area code 111
prefix 222
number 3333

وأو هل يمكن تخزين كل شيء كسلسلة إذا كنت لا تحتاج إلى التلاعب به.

هل تخزين رقم هاتف في تعويم؟ يجب استخدام عدد صحيح أو سلسلة. ربما:

NSNumber *inputToNumber = [NSNumber numberWithInt:[textField.text intValue]];

ويا شباب ما رأيكم في هذا، ويبدو أغراض بلدي كامل ملء الفراغ. الوحيدة في المملكة المتحدة في الوقت الراهن سوف تقلق جدا حول توطين عندما أحصل على فرصة.

وأنا استخدم هذا للوصول الى تخزين رقم

NSNumber *inputToNumber = [NSNumber numberWithLongLong:(long long)[[textField.text stringByReplacingOccurrencesOfString:@" " withString:@""] longLongValue]];

وهذه الطريقة تنسيقات رقم هاتفي ويعتني الآنفة الذكر 0 المذكورة.

-(NSString *)phoneNumberString:(NSNumber *)phoneNumber {
    //Add a zero because NSNumber won't save a preceeding zero
    NSString *telephoneString = [[NSString alloc] initWithFormat:@"0%@", [phoneNumber stringValue]];

    if (telephoneString.length >= 4) {
        NSString *firstPart = [[NSString alloc] initWithString: [telephoneString substringToIndex:4]];
        NSString *secondPart = [[NSString alloc] initWithString: [telephoneString substringFromIndex:4]];

        //Add the two parts together with a space inbetween
        NSString *formattedTelephoneString = [NSString stringWithFormat:@"%@ %@", firstPart, secondPart];

        //send it back to the cellForRow TableCell Method
        [firstPart release];
        [secondPart release];
        [telephoneString release];

        return formattedTelephoneString;    
    }
    else {
        return telephoneString; 
    }
}

وشكرا لجميع التعليقات. أنا ستعمل بمناسبة جواب على كل من اقترح NSString كما أخشى سأعود لاستخدام NSString لهذا بدلا من لي مشكلة أعلاه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top