1.空数组的创建
NSArray
*arr = [
NSArray
array
];
2.创建一个元素的数组
语法:[NSArray arrayWithObject:p];
Person
* p = [[
Person
alloc
]
init
];
NSArray *arr1 = [NSArray arrayWithObject:p];
//
用
%@
打印数组,系统会自动遍历数组,并把所有数组打印出来
NSLog(@"%@",arr1);
3.创建多个元素的数组
语法:[ NSArray arrayWithObjects:@"zhengyang",@"cool", @"cool",nil];
//
创建多个元素的数组,
nil
代表数组结束
NSArray
*arr =[
NSArray
arrayWithObjects
:
@"zhengyang"
,
@"cool"
,
@"cool"
,
nil
];
NSLog(@"%@",arr);
4.数组内容的复制
语法:
NSArray *arr1 = [NSArray arrayWithArray:arr];
NSArray
*arr =[
NSArray
arrayWithObjects
:
@"zhengyang"
,
@"cool"
,
@"cool"
,
nil
];
//
将
arr
里的内容原封不动的复制到
arr1
当中
NSArray
*arr1 = [
NSArray
arrayWithArray
:arr];
NSLog(@"%@",arr1);
5.获得数组的长度
语法:不是length 就是 count 是一个只读的属性(NSUInteger)
NSArray
*arr =[
NSArray
arrayWithObjects
:
@"zhengyang"
,
@"cool"
,
@"cool"
,
nil
];
NSUInteger
count = arr.
count
;
NSLog(@"%lu",count);
6.获得指定元素的位置
语法:
[arr objectAtIndex:1];
NSArray
*arr =[
NSArray
arrayWithObjects
:
@"zhengyang"
,
@"cool"
,
@"cool"
,
nil
];
//
方法
1-->常用方法
NSString
*str = arr[
0
];
NSLog
(
@"%@"
,str);
//
方法
2
NSString
*str1 = [arr
objectAtIndex
:
1
];
NSLog(@"%@",str1);
7.判断数组中是否包含某个元素
1.语法:BOOL result = [arr containsObject:@"cool"];//为包含的元素 [布尔类型]
NSArray
*arr =[
NSArray
arrayWithObjects
:
@"zhengyang"
,
@"cool"
,
@"cool"
,
nil
];
//
判断这个数组中包含某个元素
BOOL result = [arr containsObject:@"cool"];//
为包含的元素
if (result) {
NSLog(@"
数组中包含这个元素
"
);
}
else
{
NSLog
(
@"
数组中不包含这个元素
"
);}
输出结果:数组中包含这个元素
2.用法:获取数组中首尾元素
语法:
//
获得数组中第一个元素
NSString
*str = [arr
firstObject
];
//
获得最后一个元素
NSString *str1 = [arr lastObject];
3.获取数组中元素位置(角标)
语法1:
NSUInteger index = [arr indexOfObject:@"cool"];
NSArray
*arr =[
NSArray
arrayWithObjects
:
@"zhengyang"
,
@"cool"
,
@"cool"
,
nil
];
// 获取数组中元素角标
NSUInteger index = [arr indexOfObject : @"cool" ];
NSLog ( @"index = %lu" ,index);
// 如果找不到返回 NS NotFound-( 9223372036854775807)
// 获取数组中元素角标
NSUInteger index = [arr indexOfObject : @"cool" ];
NSLog ( @"index = %lu" ,index);
// 如果找不到返回 NS NotFound-( 9223372036854775807)
输出结果:
index =
1
语法2:
NSUInteger index1 = [arr indexOfObject:@"cool" inRange:NSMakeRange(0,1)];
作用:在指定范围内查找数组元素
8.NSArray的简写❤❤❤
简写格式:
//
简写不需加
nil @[
元素
1
,元素
2
,元素
3.....]
形式:
NSArray
*arr =
@[
@"ha"
,
@"haha"
,
@"hahaha"
,
@"hahahaha"
]
;
9.NSArray 的遍历❤❤❤
第1种情况(for)
用法:通过角标来遍历
例:
NSArray
*arr =
@[
@"ha"
,
@"haha"
,
@"hahaha"
,
@"hahahaha"
]
;
// 通过角标遍历
for ( int i = 0 ; i<arr. count ; i++) {
NSLog ( @"%@" ,arr[i]);}}
// 通过角标遍历
for ( int i = 0 ; i<arr. count ; i++) {
NSLog ( @"%@" ,arr[i]);}}
第2种情况(增强for循环)—forin
用法:增强for循环遍历数组
例:
NSArray
*arr =
@[
@"ha"
,
@"haha"
,
@"hahaha"
,
@"hahahaha"
]
;
for
(
NSString
*str
in
arr) {
NSLog(@"%@",str);}
第3种情况:block遍历
用法:[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {}]
例:
NSArray
*arr =
@[
@"ha"
,
@"haha"
,
@"hahaha"
,
@"hahahaha"
]
;
//
无返回值,
obj
代表数组中的每一个元素
idx
代表是对应的角标
BOOL* stop
控制遍历结束的
YES
代表数组结束
[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
//id obj NSUIteger idx BOOL* stop
NSLog
(
@"%@"
,obj);
//
遍历数组
NSLog(@"%lu",idx); //
遍历角标
if (idx==2) {*stop = YES;}}];//
控制循环结构
10.NSArray读写文件(.plist文件)
1.用法:写入文件
语法:BOOL result = [ arr writeToFile:@"/Users/mac/Desktop/1.plist"atomically:YES];(布尔类型接收)
例:
NSArray
*arr =
@[
@"ha"
,
@"haha"
,
@"hahaha"
,
@"hahahaha"
]
;
// arr
写文件
arr writeToFile:
文件路径
atomically:YES ---->
判断是否写入成功
BOOL result = [ arr writeToFile : @"/Users/mac/Desktop/1.plist" atomically : YES ];
if (result) { NSLog ( @" 写入成功 " );}
BOOL result = [ arr writeToFile : @"/Users/mac/Desktop/1.plist" atomically : YES ];
if (result) { NSLog ( @" 写入成功 " );}
else{{NSLog(@"
写入失败
"
);}}
2.用法:读文件
语法:
NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"/Users/mac/Desktop/1.plist"];
例:
NSArray
*arr1 = [
NSArray
arrayWithContentsOfFile
:
@"/Users/mac/Desktop/1.plist"
];
NSLog(@"%@",arr1);
诀窍:写文件,永远都是writeToFile(对象方法)
读文件,永远都是xxxxWithContentsOfFile (类方法)
11.NSArray 与字符串❤❤❤
1.语法:
NSString
*str = [arr
componentsJoinedByString
:
@"-"
];
用途:把数组元素连接成一个字符串
例:
NSArray
*arr =
@[
@"ha"
,
@"haha"
,
@"hahaha"
,
@"hahahaha"
]
;
//
参数是用来连接元素的字符串
NSString
*str = [arr
componentsJoinedByString
:
@"-"
];
NSLog(@"%@",str);
❤2.语法:
NSString
*str = [arr
componentsJoinedByString
:
@"-"
];
用途:把字符串切割成数组
例:
NSString
*str =
@"400-800-8802"
;
//
将字符串切割成数组,参数是用什莫来切割
NSArray *arr = [str componentsSeparatedByString : @"-" ];
NSArray *arr = [str componentsSeparatedByString : @"-" ];
NSLog(@"%@",arr);
12可变数组NSMutableArray
方法:基本与NSArray相同,一般把NSArray改成NSMutableArray就可以
详解:
NSMutableArray
*arr = [
NSMutableArray
array
];
❤
追加
[arr
addObject
:
@"a"
];
[arr addObject : @"aa" ];
[arr addObject : @"aa" ];
❤
新建数组
NSMutableArray
*arr1 = [
NSMutableArray
arrayWithObjects
:
@"bb"
,
@"bbb"
,
nil
];
❤
将
arr1
的元素复制到
arr
里面去
,arr
的内容在前
[arr
addObjectsFromArray
:arr1];
NSLog(@"%@",arr1);
❤
插入
[arr
insertObject
:
@"cc"
atIndex
:
1
];
NSLog(@"%@",arr);
❤
删除最后一个元素
NSLog
(
@"%@"
,arr);
❤
清空所有元素
[arr
removeAllObjects
];
❤
替换
1.---
将角标为
( )
替换成
( )
[arr1
replaceObjectAtIndex
:
0
withObject
:
@"yy"
];
NSLog ( @"%@" ,arr1);
NSLog ( @"%@" ,arr1);
❤
替换
2--
简便方法
arr1[
0
] =
@"hh"
;
NSLog(@"%@",arr1);
❤
将角标为
0
的元素与角标为
1
的元素交换
[arr1 exchangeObjectAtIndex:
0
withObjectAtIndex:
1
];