NSArray基本概念
- 只能存放任意OC對(duì)象,并且是有序的
- 不能存儲(chǔ)非OC對(duì)象,比如int\float\double\char\enum\struct等
- 是不可變的,一旦初始化完畢,里面的內(nèi)容固定不變丰刊,不可刪除里面的元素,也不能增加元素
NSArray創(chuàng)建方式
- 通常我們創(chuàng)建NSArray的時(shí)候增拥,我們使用類方法進(jìn)行創(chuàng)建
+ (instancetype)array;
+ (instancetype)arrayWithObject:(ObjectType)anObject;
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray<ObjectType> *)array;
+ (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
+ (nullable NSArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;
NSArray的注意事項(xiàng)
- NSArray中不能存儲(chǔ)nil啄巧,因?yàn)镹SArray認(rèn)為nil是數(shù)組的結(jié)束標(biāo)記
NSArray的常用方法
NSArray *arr = @[@"123",@"456",@"6777"];
// 獲取數(shù)組元素個(gè)數(shù)
NSUInteger count = [arr count];
// 獲取index位置的元素
NSString *str1 = [arr objectAtIndex:0];
// 是否包含某一個(gè)元素
BOOL isContain = [arr containsObject:@"123"];
// 返回最后一個(gè)元素
NSString *str2 = [arr lastObject];
// 返回第一個(gè)元素
NSString *str3 = [arr firstObject];
// 查找元素在數(shù)組中得位置,如果找不到返回-1
int index = [arr indexOfObject:@"111"];
快速創(chuàng)建方式
NSArray *arr = @[@"123", @"qwe"];
遍歷數(shù)組
NSArray *arr = @[@"3",@"1",@"4",@"10",@"5"];
// 下標(biāo)遍歷
for (int i = 0; i < arr.count; i++) {
NSLog(@"%@",arr[i]);
}
// 快速遍歷
for (NSString *str in arr) {
NSLog(@"%@",str);
}
// 使用block遍歷
// stop用來控制什么時(shí)候遍歷停止掌栅,*stop = YES 將停止遍歷
[arr enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@",obj);
}];
給NSArray中所有元素發(fā)消息
- 如果集合中保存的是自定義對(duì)象秩仆,想讓集合中得所有對(duì)象都執(zhí)行某一個(gè)方法的時(shí)候
- 可以使用以下兩個(gè)方法
如果數(shù)組中的對(duì)象沒有這個(gè)方法會(huì)報(bào)錯(cuò)
[arr makeObjectsPerformSelector:@selector(方法名)];
[arr makeObjectsPerformSelector:@selector(方法名:) withObject:@""];
NSArray排序
- 數(shù)組中得元素都是Foundation框架中的對(duì)象,不是自定義對(duì)象
- 使用compare:方法進(jìn)行排序
NSArray *arr = @[@3,@1,@4,@10,@5];
NSArray *newArr1 = [arr sortedArrayUsingSelector:@selector(compare:)];
- 下面的這個(gè)方法可以針對(duì)Foundation框架中的對(duì)象猾封,也可以是自定義對(duì)象
- 默認(rèn)是升序排序
- block中的兩個(gè)參數(shù)類型可以根據(jù)數(shù)組中元素的類型進(jìn)行更改
NSArray *arr = @[@3,@1,@4,@10,@5];
NSArray *newArr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
return obj1 > obj2;
}];
NSArray與NSString之間的轉(zhuǎn)換
- NSArray 轉(zhuǎn)換為 NSString
- - (NSString *)componentsJoinedByString:(NSString *)separator;
- separator 插入元素之間的字符串
NSArray *arr = @[@3,@1,@4,@10,@5];
NSString *str = [arr componentsJoinedByString:@"--"];
- NSString 轉(zhuǎn)換成 NSArray
- - (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
- eparator 最為分割符切割字符串
NSString *str1 = @"3--1--4--10--5";
NSArray *arr1 = [str1 componentsSeparatedByString:@"--"];
NSArray文件讀寫
- 將數(shù)組寫入文件
- 數(shù)組元素必須是Foundation框架中類創(chuàng)建的對(duì)象
- 如果是自定義對(duì)象將沒有辦法寫入
NSArray *arr = @[@"123",@"awe11",@"zdxcq"];
[arr writeToFile:@"/Users/coder/Desktop/sublime.plist" atomically:YES];
- 從文件中讀取數(shù)據(jù)到NSArray中
NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"/Users/coder/Desktop/sublime.plist"];