/*
NSArray :
+(+(id)arrayWithObjects:obj1,obj2,...nil 创建一个新的数组,obj1,obj2......是他的元素对象,以nil对象结尾
-(BOOL)containsObject:obj 确定数组中是否包含对象obj
-(NSUInteger)count 返回数组元素个数
-(NSUInteger)indexOfObject:obj 第一个包含obj元素的索引号
-(id)objectAtIndex;i 返回存储在位置 i 的对象
-(void)makeObjectsPerformSelector:(SEL)selector 将 selector 只是的消息发送给数组中的每个元素
-(NSArray*)sortedArrayUsingSelector:(SEL)selector 根据selector 指示的比较方法对数组进行排序
-(BOOL)writeToFile:path atomically:(BOOL)flag 将数组写入指定的文件中,如果 flag 为 YES,则需要先创建一个临时文件
NSMutableArray :
+array 创建一个空数组
+(id)arrayWithCapacity:size 创建一个数组,指定容量为size
-(id)initWithCapacity:size 初始化一个新分配的数组,指定容量为size
-(void)addObject:obj 将对象obj添加到数组末尾
-(void)insertObject:obj atIndex:i 将对象 obj 插入到索引为 i 的位置
-(void)replaceObject:obj atIndex:i 将数组中索引为 i 处的元素用obj 置换
-(void)removeObject:obj 从数组中删除所有是 obj 的对象
-(void)removeObjectAtIndex:i 从数组中删除索引为 i 的对像
-(void)sortUsingSelector:(SEL)selector 用 selector 只是的比较方法将数组排序
*/
// 初始化
{
NSArray *arr = @[@0, @1, @2, @3, @4, @5, @6, @7, @8, @9];
// mutableCopy 是为了能转成 mutable
NSMutableArray *mutableArray = [@[@1,@2,@4,@6,@3,@5,@8,@7,@9,@0,[NSNull null]] mutableCopy];
}
{
// 定义容量为 10,可继续加长
NSMutableArray *mutableArray0 = [[NSMutableArray alloc] initWithCapacity:10];
NSArray *array1 = [[NSArray alloc] initWithObjects:@"aa",@"bb",@"c", nil];
// 插入到指定 索引的前面
[mutableArray0 insertObject:@"this is inerted object" atIndex:0];
// 替换
[mutableArray0 replaceObjectAtIndex:0 withObject:@"new obj"];
// 打印第一个相同的元素:
NSLog(@"the object is:%@",[mutableArray0 firstObjectCommonWithArray:array1]);
// 打印最后一个元素:
NSLog(@"the object is:%@",[mutableArray0 lastObject]);
//判断数组是否包含某个对象
if ([mutableArray0 containsObject:@"selectiont"])
{
NSLog(@"the object selection is contained in array");
}
else
{
NSLog(@"not contain");
}
// 让数组里面的所有对象都调用 test 方法
[mutableArray0 makeObjectsPerformSelector:@selector(test1)];
// 让数组里面的所有对象都调用 test 方法 且传参数 @"fs"
[mutableArray0 makeObjectsPerformSelector:@selector(text2) withObject:@"fs"];
//获取元素索引
NSLog(@"the idx is:%ld",[mutableArray0 indexOfObject:@"b"]);
}
{
//删除数组元素
NSMutableArray *tempArray=[[NSMutableArray alloc]initWithObjects:@"b",@"a",@"r",nil];
NSArray *newArray = [[NSArray alloc] initWithObjects:@"a",@"tow",@"on",@"onee", nil];
// 从指定索引移除
[tempArray removeObjectAtIndex:0];
// 移除所有元素
[tempArray removeAllObjects];
// 移除最后那个元素
[tempArray removeLastObject];
// 移除指定数组中元素
[tempArray removeObjectsInArray:newArray];
}
{
// NSMutableIndexSet 可以用来存储一系列的索引值区间
NSMutableIndexSet *idxSet = [[NSMutableIndexSet alloc] init];
// 添加 5 和 2
[idxSet addIndex:5];
[idxSet addIndex:2];
// 添加 7 - 10
[idxSet addIndexesInRange:NSMakeRange(7, 4)];
[idxSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
NSLog(@"idxSet : %lu", (unsigned long)idx);
}];
NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12", nil];
// 从所选择的索引中移除
[mutableArray removeObjectsAtIndexes:idxSet];
NSLog(@"mutableArray : %@",mutableArray);
}
{
NSArray *array;
// 用枚举器:
// 获取数组的迭代器
NSEnumerator *enumerator = [array objectEnumerator];
// 反序迭代器 ,从尾部开始遍历元素
// NSEnumerator *enumerator = [array reverseObjectEnumerator];
// 取出所有没有被遍历过的对象,获取完之后 enumerator 里的元素也没了
NSArray *arr = [enumerator allObjects];
NSLog(@"arr : %@",arr);
// 获取下一个需要遍历的元素
id obj;
// 遍历完之后 enumerator 里面的元素就为空了
while (obj =[enumerator nextObject]) {
NSLog(@"obj : %@",obj);
}
// 枚举所有元素, block 遍历
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// idx 为索引值 ,obj 是索引对象
NSLog(@"idx : %li--%@",idx,obj);
// 控制只能输出 n 个
if(idx == 1)
{
// *stop = YES; 代表停止遍历
*stop =YES;
}
}];
}
{
NSString *str1 = @"1,2,3,4,5,6,7,8,9,";
// 将字符串按照某个字符串分割成数组
NSArray *arr2 = [str1 componentsSeparatedByString:@","];
// 将数组按照某个字符组合成字符串
NSString *str2 = [arr2 componentsJoinedByString:@"."];
}