在進行數據處理的時候,因為對象類型的不同, 並不能進行相應的數據處理,所以必須要進行數據類型的轉換,這也就是NSNumber,NSValue這兩類值對象出現的原因。 簡而言之,NSNumber就是實現基本數據類型與對象類型的互相轉換,而NSValue,則是實現結構體對象與對象類型的互相轉換。 NSN
在進行數據處理的時候,因為對象類型的不同, 並不能進行相應的數據處理,所以必須要進行數據類型的轉換,這也就是NSNumber,NSValue這兩類值對象出現的原因。
簡而言之,NSNumber就是實現基本數據類型與對象類型的互相轉換,而NSValue,則是實現結構體對象與對象類型的互相轉換。
NSNumber因為是實現基本數據類型與對象類型的互相轉換,所以,必須是要有數據類型,而int ,char,BOOL,Float,Long,Integer等等等~都可以進行相應的轉換
//1.將基本數據類型轉換為NSNumber *類型的對象
int number = 10;
NSNumber *num = [NSNumber numberWithInt:number];
//2.將NSNumber *類型的對象還原成基本數據類型
int result = [num intValue];
其它的類型使用方法也是相同的方法,比如BOOL
BOOL isYes = YES;
NSNumber *isY = [NSNumber numberWithBool:isYes];
NSValue也是同樣的道理
//1.將結構體轉換成值對象
NSRange range = {5,8};
NSValue *value = [NSValue valueWithRange:range];
/2.將對象轉換成原有的結構體
NSRange newRange = [value rangeValue];
//結構不能直接列印,用NSStringFromRange結構體轉換成字元串打出來
NSLog(@"%@",NSStringFromRange(newRange));
註意:當然這隻是單純的介紹一樣方法的使用,在做項目或者是做一些數據處理,類型轉換時還需要註意當時的形式來使用。比如NSNumber可以實現大小的比較,並不是像字元串那樣逐字逐的比較。
NSNumber *number1 = [NSNumber numberWithInt:17];
NSNumber *number2 = [NSNumber numberWithInt:123];
NSComparisonResult numberReslu = [number1 compare:number2];
NSLog(@"numberResult is %ld",numberReslu);//最後比較的結果是 - 1,而不是1,如果是字元串比較的話則是1.