你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS Foundation框架 -3.利用NSNumber和NSValue將非OC對象類型數據存放到集合

iOS Foundation框架 -3.利用NSNumber和NSValue將非OC對象類型數據存放到集合

編輯:IOS開發綜合
1.Foundation框架中提供了很多的集合類如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary但是這些類只能存放OC對象類型的數據   2.如果要存放基本數據類型,必須先將基本暑假類型包裝成對象類型然後再用集合類進行存儲,OC中提供的包裝類是NSNumber,NSValue。其中NSNumber繼承於NSValue。   3.NSNumber主要針對於基本數據類型的包裝,NSValue主要針對結構體進行包裝   4.將包裝成NSNumber或NSValue對象類型後存放在數組中,然後從集合類中取出NSNumber、NSValue對象再轉換成為基本數據類型   5.NSNumber的基本使用   復制代碼 復制代碼        // 1.將int基本類型包裝成NSNuber對象類型     NSNumber *ageNum = [NSNumber numberWithInt:10];          // 2.將包裝後的對象存放到字典集合中     NSDictionary *dic = @{@"name":@"Jack",@"age":ageNum};          // 3.取出NSNumber對象     NSNumber *ageNum2 = dic[@"age"];          // 4.再將age對象轉換稱為基本數據類型int     int age = [ageNum2 intValue];          NSLog(@"%d",age);   // 輸出 10 復制代碼   復制代碼     // NSNumber提供了很多將基本數據類型轉換稱為NSNumber對象類型的方法 簡單舉例     NSNumber *intNum = [NSNumber numberWithInt:20];     NSNumber *doubleNum = [NSNumber numberWithDouble:20.5];     NSNumber *floatNum = [NSNumber numberWithFloat:98.98787];     NSNumber *boolNum = [NSNumber numberWithBool:YES];          // 對應的轉換稱為基本數據類型的方法     int a = [intNum intValue];     double b = [doubleNum doubleValue];     float c = [floatNum floatValue];     BOOL d = [boolNum boolValue];          // NSString對象也可以轉換稱為int     NSString *str = @"20";     int e = [str intValue]; // 輸出 20 復制代碼   可以看出雖然NSNumber提供了很多將基本數據類型轉換成為NSNumber對象的方法,但是這樣寫起來太麻煩,Xcode編譯器新特性支持 @[(基本數據類型)]方式,可以直接將基本數據類型轉換稱為NSNumber對象類型。如下代碼:       復制代碼     // 成績     char score  = 'A';     NSArray *student = @[       @{@"name": @"Jim", @"age":@20, @"height":@175.5, @"weight":@60.5, @"score":@(score)},       @{@"name": @"John", @"age":@22, @"height":@179.8, @"weight":@67.2, @"score":@(score)},       @{@"name": @"Jack", @"age":@21, @"height":@180.0, @"weight":@70, @"score":@(score)}         ];   // 可以看出將int,double類型在直接轉換就是在前面加@,如果是變量就用()將變量括起來 復制代碼 復制代碼 6.NSValue的基本使用   復制代碼     // 創建點坐標結構體     CGPoint point = CGPointMake(20, 20);          // 將結構體轉換成為NSValue對象     NSValue *pointValue = [NSValue valueWithPoint:point];          // 將NSValue對象存放到數組中     NSArray *array = @[pointValue];          // 從數組中取出pointValue對象     NSValue *value = array[0];          // 將NSValue對象轉換成為結構體     CGPoint point2 = [value pointValue];          // 輸出:轉換成基本類型結構體point2的值:     // 第一種方式:將結構體先轉換為字符串然後打印     NSString *str = NSStringFromPoint(point2);     NSLog(@"%@",str); // 輸出 {20,20}     // 第二種方式:依次取出對應的值打印     // NSLog(@"%f %f",point2.x,point2.y); 輸出 20.000000 20.000000
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved