int、NSInteger、NSNumber和NSString以及相互轉換

 NSInteger:spa

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

由定義可知,在32系統下NSInteger 即爲int,在64位系統下NSInteger位long。蘋果的官方文檔中老是推薦用NSInteger。code

總結:NSInteger與int的區別是NSInteger會根據系統的位數(32or64)自動選擇int的最大數值(int or long)。orm

當須要使用int類型的變量的時候,能夠像寫C的程序同樣,用int,也能夠用NSInteger,但更推薦使用NSInteger,由於這樣就不用考慮設備是32位的仍是64位的。對象

在開發中只需使用NSInteger便可。blog

 

 

NSNumber:Cocoa提供了NSNumber類來包裝(即以對象形式實現)基本數據類型。開發

NSInteger是基礎類型,可是NSNumber是一個類。若是想要存儲一個數值,直接用NSInteger是不行的,好比在一個Array裏面這樣用:文檔

NSArray *array= [[NSArray alloc]init];
[array addObject:3];//會編譯錯誤

這樣是會引起編譯錯誤的,由於NSArray裏面放的須要是一個類,但‘3’不是。這個時候須要用到NSNumber:字符串

NSArray *array= [[NSArray alloc]init];
[array addObject:[NSNumber numberWithInt:3]];

Cocoa提供了NSNumber類來包裝(即以對象形式實現)基本數據類型。get

例如如下封裝方法:string

+ (NSNumber*)numberWithChar: (char)value;
+ (NSNumber*)numberWithInt: (int)value;
+ (NSNumber*)numberWithFloat: (float)value;
+ (NSNumber*)numberWithBool: (BOOL) value;

將基本類型數據封裝到NSNumber中後,就能夠經過下面的實例方法從新獲取它:

- (char)charValue;
- (int)intValue;
- (float)floatValue;
- (BOOL)boolValue;
- (NSString*)stringValue;

                                                                   相互之間的轉換

1: NSString  <==> NSInteger

 

 NSInteger轉化 NSString類型:
      [ NSString  stringWithFormat:  @"%d" , NSInteger];
NSString轉化 NSInteger類型:
      NSInteger = [ NSString   intValue ] 

 

 

2 : NSString <==> NSNumber

 

將NSNumber轉換爲NSString

NSNumber *A;
NSString *B;
NSNumberFormatter* numberFormatter = [[NSNumberFormatteralloc] init];
B = [numberFormatter stringFromNumber:A];

 

將NSString轉換爲NSNumber    

    NSString *ss=@"224.34129";
    NSNumber*result;
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    result=[f numberFromString:ss];
    if(!(result))
    {
        result=ss;
    }
    NSLog(@"%.2f",[result floatValue]);

 

3.NSString 與 int ,float,double,NSInteger之間的轉換  

 NSString *teststring = @"32.54" ;

    int i = [teststring intValue ];

    float i1 = [teststring floatValue ];

    double i2 = [teststring doubleValue ];

    NSInteger i3 = [teststring integerValue ];

    

    NSString *tostring = nil ;

    tostring = [ NSString stringWithFormat: @"%d" ,i];

    NSLog ( @"tostring-int:%@",tostring);

    tostring = [ NSString stringWithFormat: @"%.3f" ,i1];

    NSLog ( @"tostring-float:%@",tostring);

    tostring = [ NSString stringWithFormat: @"%e" ,i2];

    NSLog ( @"tostring-double:%@",tostring);

 

4.nsstring和float 還有int之間的轉換

 NSString *tempA = @"123";

NSString *tempB = @"456";

 

1,字符串拼接

NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];

 

2,字符轉int

int intString = [newString intValue];

 

3,int轉字符

NSString *stringInt = [NSString stringWithFormat:@"%d",intString];

 

4,字符轉float

float floatString = [ newString floatValue];


5,float轉字符

NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
相關文章
相關標籤/搜索