<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>
OC學習(五)不可變數組類,可變數組類及數值類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.