Come convertire NSString per NSNumber senza l’utilizzo di numberfromstring

Voglio convertire NSString per NSNumber senza l’utilizzo di numbreFromString: metodo? Il numbreFromString: metgod agisce stranamente in 4.0. Quindi voglio utilizzare un’alternativa per la conversione NSString per NSNumber. Please Help me….

+ (NSString *)formatText:(NSString *) text withLocalSettings:(BOOL) isLacale {  

    NSNumber *aNsNumber= [numberFormatter numberFromString: text];  
    NSString *returnString = [NSString stringWithString:[numberFormatter stringForObjectValue:aNsNumber]];

    if(isLacale) {
        return returnString;
    }
    else {
        return [NSString stringWithFormat:@"%lf",[aNsNumber doubleValue]];
    }
} 

0

Sto sviluppando un’applicazione che ho bisogno di correre la mia app sia in 3.0 e 4.0. Ho un campo di testo in cui, quando cerco di inserire i numeri in textfield il comportamento è simile a questo… IN 3.0 :- permette di inserire 7 cifre e 2 i valori frazionari (ho formattato in questo modo). Ho formattato e localizzato i numeri con la virgola separazioni a seconda del paese selezionato. È perfettamente funzionante in 3.0 e 3.1.2

IN 4.0 : – permette di inserire solo 4 numeri e dopo l’inserimento di 5 cifre, è fare in modo che i campi di testo vuoto.. non viene visualizzato Nulla, quando u inserire il 5 ° numero e quando u inserire il numero 6 si parte dal 1 ° numero e continua lo stesso fino a 4 numeri. es: quando u inserire 1234, textfield appare – 1234 e quando u inserisci 12345, il campo di testo viene visualizzato ” “. e quando u enter 6 ora si inizia con 6 e così via..

Sto usando la NSNumberFormatter e numberfromstring metodo per formattare i valori inseriti nel textfield.

Io non sono in grado di capire perché questo sta accadendo come questo… Please help me…

Probabilmente sarei provare a cercare nel motivo per cui il metodo di lavoro è stranamente. In 9 casi su 10 il problema è nell’ingresso. Posta il tuo codice e di ingresso – che ci darà di più per lavorare con.
+(NSString *)formatText:(NSString *) testo withLocalSettings:(BOOL) isLacale { [numberFormatter retain]; NSNumber *aNsNumber = [[NSNumber alloc]init]; aNsNumber= [numberFormatter numberFromString: testo]; //NSLog(@”Il Valore di NSNumber è … %@”,aNsNumber); NSString *returnString = [NSString stringWithString:[numberFormatter stringForObjectValue:aNsNumber]]; if(isLacale) { return returnString; } else { return [NSString stringWithFormat:@”%lf”,[aNsNumber doubleValue]]; } }
aNSNumber sta diventando null 4.0 dopo u inserire 4 numeri nei campi di testo e quando u inserire il 5 ° numero in textfield e tenta di chiamare questo formatText Metodo, aNsNumber diventa nullo in 4.0, ma in 3.0 a 3.1.3 si sta lavorando bene….
Modificare la tua domanda per inserire lo snippet di codice con la formattazione…
Anche controllare il developer forum al sito web di Apple prova a cercare “numberfromstring ios4” ci sono tre thread che potrebbero essere di interesse per voi.

OriginaleL’autore Pradeep Reddy Kypa | 2010-07-02

2 Replies
  1. 16
    [NSNumber numberWithInteger:[theString integerValue]];
    [NSNumber numberWithDouble:[theString doubleValue]];
    

    anche floatValue, intValue, longLongValue, boolValue

    Edit:

    per togliere le virgole, utilizzare stringByReplacingOccurrencesOfString prima di fare sopra.

    theString = [theString stringByReplacingOccurrencesOfString:@"," withString:@""];
    

    per togliere più di un carattere, si potrebbe ottenere qualcosa di funzionante con componentsSeparatedByCharactersInset.

    theSet = [NSCharacterSet characterSetWith...];
    theString = [[theString componentsSeparatedByCharactersInSet:theSet] componentsJoinedByString:@""];
    
    Ho un valore di stringa dove contiene virgola. Es: 1,234. Voglio ottenere il valore della stringa in cui ho bisogno solo 1234. Potete per favore aiutarmi…

    OriginaleL’autore drawnonward

  2. 0

    iOS4 è molto esigente quando si tratta di formattazione di numeri.

    Nel codice di esempio che è passata in un locale – assicurarsi che il separatore decimale nel vostra stringa è in linea con quanto definito nel locale. Assicurarsi di immettere numeri che sono formattati correttamente (iOS4) id est novemila dovrebbe essere 9.000 e non 9000 se si utilizza DecimalStyle.

    Se ti ostini a usare un altro parser – sscanf un atoi potrebbe essere un’opzione.

    Uso standard c lib sscanf con formatter o atoi a seconda dei numeri da convertire.

    #include<stdio.h>
    
    int main(int argc, char **argv) {
    
       char s[] = "1.2";
       double x;
    
       sscanf(s, "%lf", &x);
       printf("The decimal number was %g\n\n", x);
    
       return 1;
    }
    

    atoi prende una stringa contenente un numero intero e restituisce un valore di tipo int.

    OriginaleL’autore Niels Castle

Lascia un commento