OC學習(五)不可變數組類,可變數組類及數值類

<span style="font-size:18px;">今天主要學習了不可變數組類,可變數組類及數值類中的部分常用方法,下面是我對今天學習的簡要總結

我們爲什麼要學習OC的數組,下面就是數組的幾個方面的價值:
(1)存儲多個元素.
(2)存儲元素只能是對象,對象可以是不同類型. 
(3)數組是一個有序的集合. 
(4)數組中的元素可以重複,而且重複的對象會成爲數組元素.

不可變數組類的部分常用方法:
1.創建數組對象
(1)使用便利構造器
 arrayWithObjects 創建對象時可以指定多個對象元素,元素與元素之間通過逗號進行間隔
 //nil 作爲數組元素存放的結束標誌,遇到 nil 之後的元素,都不會放入數組
 NSArray *arr1 = [NSArray arrayWithObjects:@"aa", @"bb", @"cc", nil];
 NSLog(@"arr1 = %@", arr1);
(2)使用初始化方法
 NSArray *arr2 = [[NSArray alloc] initWithObjects:@"aa", @"bb", @"cc", @"aa", 
 @"bb", @"cc", nil];
 NSLog(@"arr2 = %@", arr2);
2.獲取元素個數
 NSUInteger count = [arr1 count];
 NSLog(@"%lu", count);
3.根據索引值獲取對象
(1)獲取指定下標對應的元素
 NSString *str1 = [arr1 objectAtIndex:1];
 NSLog(@"%@", str1);
(2)獲取數組中的第一個元素
 //firstObject 與 lastObject 方法比 objectAtIndex: 方法好在當數組元素爲空時,會返回nil,
 // 而 objectAtIndex: 則會造成程序crash.(超出下標範圍)
 NSString *str2 = [arr1 firstObject];
 NSLog(@"%@", str2);
(3)獲取數組中的最後一個元素
 NSString *str3 = [arr1 lastObject];
 NSLog(@"%@", str3);
4.獲取對象在數組中的索引值
 NSUInteger index = [arr1 indexOfObject:@"dd"];
 NSLog(@"%lu", index);
5.判斷是否包含某個對象
 BOOL isExist = [arr1 containsObject:@"Frank"];
 NSLog(@"%d", isExist);
6.數組排序(最簡單版)
 NSArray *sortArr = [arr2 sortedArrayUsingSelector:@selector(compare:)];
 NSLog(@"%@", sortArr);
7.快速遍歷(快速枚舉)
 for (NSString *str in arr2) {
     NSLog(@"%@", str);
 }

和已經學過的可變字符串類與不可變字符串類一樣,可變數組類也是繼承於不可變數組類.因此,上面介紹的
方法及不可變數組類的其他方法可變數組就可以用,下面介紹一些可變數組類獨有的部分方法:
前提:建立一個書籍類(Book),包括實例變量書名,作者,價格,方法需要有書名和價格的設置器和訪問器,自定義初始化,及
重寫的description

1.先創建幾本書
 Book *book1 = [[Book alloc] initWithName:@"IOS初級編程" author:@"Frank" price:20.0];
 Book *book2 = [[Book alloc] initWithName:@"IOS中級編程" author:@"Frank" price:25.0];
 Book *book3 = [[Book alloc] initWithName:@"IOS高級編程" author:@"Frank" price:30.0];
2.存儲在數組中
 NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:book1, book2, book3, nil];
3.添加一本書,添加終極
 Book *book4 = [[Book alloc] initWithName:@"IOS終級編程" author:@"Frank" price:30.0];
 [arr addObject:book4];
4.刪除一本書,刪除初級
 [arr removeObject:book1];
5.通過書名查找對應的書
 for (Book *book in arr) {
 //獲取到數組中的元素,然後對比名字,如果相同就輸出名字
 if ([[book name] isEqualToString:@"IOS高級編程"]){
      NSLog(@"查找成功");
      NSLog(@"%@", [book name]);
      [book setPrice:20.0];
    }
 }
 NSLog(@"%.2f", [book3 price]);
6.輸出書籍清單
//重寫的description方法實現如下
//- (NSString *)description
//{
//    return [NSString stringWithFormat:@"%@ %@ %g", _name, _author, _price];
//}

 for (Book *book in arr) {
      NSLog(@"%@", book);
 }


數值類方法不是特別常用,簡單的介紹幾種:

1.定義基本數據類型變量
 char a = 'k';
 int b = 108;
 float e = 2.25;
 BOOL isTrue = YES;
2.將基本數據類型轉爲NSNumber類型的對象
 NSNumber *a1 = [NSNumber numberWithChar:a];
 NSLog(@"%@", a1);
 NSNumber *b1 = [NSNumber numberWithInt:b];
 NSLog(@"%@", b1);
 NSNumber *c1 = [NSNumber numberWithFloat:c];
 NSLog(@"%@", c1);
 NSNumber *isTrue1 = [NSNumber numberWithBool:isTrue];
 NSLog(@"%@", isTrue1);
 NSArray *arr = [NSArray arrayWithObjects:a1, b1, c1, isTrue1, nil];
 NSLog(@"%@", arr);
3.將NSNumber類型的對象轉爲基本數據類型,取兩個比較特殊的
 char a2 = [a1 charValue];
 NSLog(@"%c", a2);
 BOOL isTrue2 = [isTrue1 boolValue];
 NSLog(@"%d", isTrue2);
4.NSNumber類型的比較
 NSLog(@"%ld",  [a1 compare:b1]);</span>

發佈了17 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章