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];