I'm having trouble converting a string into an integer. I googled it but all I can find is how to convert an int into a string. Does anyone know how to do it the other way around? Thanks.
            Asked
            
        
        
            Active
            
        
            Viewed 1.3e+01k times
        
    11 Answers
265
            See the NSString Class Reference.
NSString *string = @"5";
int value = [string intValue];
 
    
    
        Espresso
        
- 4,722
- 1
- 24
- 33
22
            
            
        How about
[@"7" intValue];
Additionally if you want an NSNumber you could do
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter numberFromString:@"7"];
 
    
    
        Paul.s
        
- 38,494
- 5
- 70
- 88
- 
                    6good lord NSNumberFormatter is complex ... i mean "feature complete". – Dave Dopson Apr 08 '12 at 00:37
- 
                    4Watch out - in iOS7 `numberFromString` seems to be an _instance_ method rather than a _class_ one, so you should do `[[NSNumberFormatter new] numberFromString:@"7"];` instead. – mgarciaisaia Aug 06 '14 at 17:11
- 
                    @mgarciaisaia shouldn't we do `[[[NSNumberFormatter alloc] init] numberFromString:@"7"];` as per http://stackoverflow.com/questions/719877/use-of-alloc-init-instead-of-new – Michael Osofsky Aug 30 '14 at 20:09
3
            
            
        I use:
NSInteger stringToInt(NSString *string) {
    return [string integerValue];
}
And vice versa:
NSString* intToString(NSInteger integer) {
    return [NSString stringWithFormat:@"%d", integer];
}
 
    
    
        max_
        
- 24,076
- 39
- 122
- 211
- 
                    1
- 
                    I am using data pulled from NSUserDefaults so what should I put after the NSString *string = – Yo_Its_Az Jul 09 '11 at 23:26
- 
                    Will either of these actually work? Surely the definitions need a semi colon or you will crash with `unrecognized selector` because you will actually be sending `@selector(intToString:)` not `@selector(intToString)`. Surely it should be like this instead `- (NSInteger) stringToInt:(NSString *)string;` and `- (NSString *)intToString:(NSInteger)integer;` – Paul.s Jul 09 '11 at 23:27
- 
                    1They're both C functions. It needs to be `NSString *` though, like @David said. – Espresso Jul 09 '11 at 23:30
- 
                    
- 
                    I hand wrote it rather than running it through Xcode, thats why the * was missing. – max_ Jul 09 '11 at 23:33
- 
                    +1 for being the only answer that correctly uses integerValue instead of intValue which is better able to handle the difference between 32-bit and 64-bit architectures. – Abizern Feb 08 '13 at 13:41
2
            
            
        This is the simple solution for converting string to int
NSString *strNum = @"10";
int num = [strNum intValue];
but when you are getting value from the textfield then,
int num = [txtField.text intValue];
where txtField is an outlet of UITextField
 
    
    
        iAnkit
        
- 1,940
- 19
- 25
1
            
            
        I had to do something like this but wanted to use a getter/setter for mine. In particular I wanted to return a long from a textfield. The other answers all worked well also, I just ended up adapting mine a little as my school project evolved.
long ms = [self.textfield.text longLongValue];
return ms;
 
    
    
        natur3
        
- 236
- 1
- 3
- 14
0
            
            
        Yet another way: if you are working with a C string, e.g. const char *, C native atoi() is more convenient.
 
    
    
        dotslashlu
        
- 3,361
- 4
- 29
- 56
0
            
            
        You can also use like :
NSInteger getVal = [self.string integerValue];
 
    
    
        Corey Adler
        
- 15,897
- 18
- 66
- 80
 
    
    
        newbee
        
- 17
- 6
0
            
            
        To convert an String number to an Int, you should do this:
let stringNumber = "5"
let number = Int(stringNumber)
 
    
    
        Ale Mohamad
        
- 372
- 4
- 7
0
            
            
        NSString *string = /* Assume this exists. */;
int value = [string intValue];
 
    
    
        Alexsander Akers
        
- 15,967
- 12
- 58
- 83
- 
                    I am using data pulled from NSUserDefaults so what should I put after the NSString *string = – Yo_Its_Az Jul 09 '11 at 23:23
- 
                    1NSString *string = [[NSUserDefaults standardUserDefaults] stringForKey:@"YOUR_KEY"]; – Benjamin Mayo Jul 10 '11 at 08:03
 
     
    