OC(三)数组

作者: 社会主义顶梁鹿 | 来源:发表于2018-07-29 16:39 被阅读0次

    数组:按照顺序排列的元素的集体

     数组取值:数组是通过下标(索引)去取值

     NSArray(数组类名) 数组 在OC里面允许数组里面存在放不同类型的元素,在取值的时候,一定要注意数组类型,尽量存相同类型的数据

    #import 

    //#import 是导入整个《声明文件》,可以使用里面所有内容

    //@class 提示类名,只可以使用类名,并未使用类里面的内容

    int main(int argc, const char * argv[]) {

     @autoreleasepool {

    在数组里面存储的都是NSObject数据

    NSArray *list=@[@"11",@"22",@"33"];

    基本数据类型 存到数组

    NSNumber把数字类型的变量包成NSObject类型

    数字转 NSNumber?

    把咱们数字到数组的时候,不可以直接存放非NSObject类型的数据

    可以把数字转换成NSNumber

    int a=100;

    NSNumber *num=[[NSNumber alloc]initWithInt:a];

    NSNumber *num=[NSNumber numberWithInt:a];

    转NSNumber类型的缩写@(要转的数据)

    NSArray *list1=@[@(a),@(0.55)];

    NSNumber *num1=list1[0];

    int num0=[list1[0] intValue];

     #pragma ----------初始化数组--------

    1、初始化方式1--直接赋值 @[元素,元素]

    在OC里面允许数组里面存在放object类型的元素

    NSArray *array = @[@"字符串",65,p];

    字符串只是一段文字,禁止将对象当做字符串来存。👌

    2、初始化方式2

    NSArray *list = [[NSArray alloc]init];

    初始化一个空数组是有意义的,oc中数组允许直接赋值

    3、初始化方式3

    NSArray *list = [NSArray array];

    4、初始化并赋值

    (1)初始化只有一个元素的数组

    NSArray *list = [NSArray arrayWithObject:@"..."];

    (2)初始化多个元素的数组

    NSArray *list = [NSArray arrayWithObjects:@"",@"", nil];

    注意事项:nil不可以省略 最后一个元素的逗号不可以省略

    最常用的初始化方式:**

    NSArray *list = @[@"",@""];

    NSArray *list = [NSArray array];空数组

     #pragma ----------数组取值--------

    数组取值:下标(索引)取值,下标是从0开始的

    NSArray *list = @[@"八戒",@"悟空",@"和尚",@"宝宝",@"旺旺"];

    取值:数组名[下标];

    #pragma ----------数组遍历----------

    数组遍历.1

    获得数组元素个数的属性: count

    使用方法:数组名.count

    for (int i=0; i

    NSString *s = list[i];

    NSLog(@"%@",s);

    }

    数组遍历.2 快速遍历

    for (元素类名 *对象名(所取元素) in 数组名) {

    NSLog(@"%@",所取元素);

    }

    for (NSString *s in list) {

    NSLog(@"%@",s);

    }

    NSArray *list = @[@"lucy",@"lily",@"lilei",@"hanmeimei"];

    NSLog(@"%@",list);

    /*打印出来的结果

    数组元素是用逗号隔开的

    (

    lucy,

    lily,

    lilei,

    hanmeimei

    )*/

    NSArray *list = @[@"lucy",@"lily",@"lilei",@"hanmeimei"];

    通过方法取值  objectAtIndex

    (1) NSString *s = [list objectAtIndex:0];

    倒着遍历 先了解一下

    int num = [@(list.count)intValue];

    for (int i=num; i>=0; i--) {

    }

    (1)(2)两种方法完全等价,一旧一新罢了

    (2)for (int i=0; i

    NSLog(@"%@",[list objectAtIndex:i]);

    }

    #pragma字符串里面可以通过符号截取字符串变成数组

    以字符串某个元素为分界点将之变成数组,将这个元素过滤,注意区分中英文符号(所占字节数是不一样的)

    NSString *content = @"葫芦娃,小明,老王,大黄";

    NSArray *list = [content componentsSeparatedByString:@","];

    for (NSString *s in list) {

    NSLog(@"%@",s);

    }

    #pragma -------数组变成字符串----------

    NSArray *list = @[@"小明",@"小红",@"小萌"];

    componentsJoinedByString的意思:加入一个字符串使之返回一个字符串

    NSString *s = [list componentsJoinedByString:@""];

    NSLog(@"%@",s);

    直接把数组格式化字符串,数组会保持原始状态

    NSString *s = [NSString stringWithFormat:@"%@",list];

    NSLog(@"%@",s);

    #pragma ---可变数组 NSMutableArray-------

    注意!:不可以直接给可变数组赋值*******

    NSMutableArray *list = @[];❌

    NSArray *arr = @[@"",@""];

    NSMutableArray *list = [NSMutableArray arrayWithArray:arr];

    NSString *s1 = @"";

    NSString *s2 = @"";

    NSMutableString *s = [NSMutableString stringWithFormat:@"%@%@",s1,s2];

    不可变数组里面所有的方法,可变数组都可以使用

    NSMutableArray *list = [NSMutableArray arrayWithObjects:@"",@"", nil];

    #pragma ----可变数组的增删改查----------

    NSMutableArray *list = [NSMutableArray array];

    #pragma -----1.添加元素-----

    Hero *hero = [[Hero alloc]init];

    给英雄赋值...

    添加一个object类型的元素

    [list addObject:hero];

    再添加..

    [list addObject:hero];

    NSLog(@"%lu",list.count);

    如果添加10个...就用for循环,

    alloc init 会创建一个对象,出现一次就会创建一个对象

    for (int i=0; i<10; i++) {

    Hero *hero = [[Hero alloc]init];

    [list addObject:hero];

    }

    #pragma -----2.删除元素-----

    NSMutableArray *list = [NSMutableArray arrayWithObjects:@"lucy",@"mike",@"tom",nil];

    删除指定元素

    可以通过下标来删除

     (1)[list removeObjectAtIndex:1];

     (2) NSRange range = {0,2};

    [list removeObjectsInRange:range];

    NSLog(@"%@",list);

    移除最后一个元素

    [list removeLastObject];

    移除全部内容

    [list removeAllObjects];

    #pragma -----3.替换-----

    [list replaceObjectAtIndex:1withObject:@"hanyang"];

    #pragma -----4.查找-----

    //1.通过下标,查找元素所在位置

    list[0];

    //2.通过元素,查找元素所在位置

    NSString *name = @"tom";

    NSUInteger i = [list indexOfObject:name];

    NSLog(@"%lu",(unsigned long)i);

    ------------------------------回顾以上------------------------------

     1、不可变数组

     数组的初始化

     (1)NSArray *list = @[@"",@""];

     (2)NSArray *list = [[NSArray alloc]init];

     (3)NSArray *list = [NSArray array];

     初始化并赋值

     (1)只赋一个值NSArray *list = [NSArray arrayWithObject:@""];

     (2)初始化 并赋多个值 NSArray *list = [NSArray arrayWithObjects:@"",@"", nil];

     注意:最后一个元素的逗号 和 nil 不能省略

     数组取值

     (1)list[0];

     (2)[list objectAtIndex:0];

     快速遍历

     for (元素 in 数组) {

     }

     数组转字符串

     (1)直接格式化[NSString stringWithFormat:@"%@",list];

     (2)加入一个字符串去分割数组 [list componentsJoinedByString:@""];

     把字符串转成数组

     通过一个标记 把字符串分割成数组

     NSString *ss =@"qqqq11www11eee";

     [ss componentsSeparatedByString:@"11"];

     可变数组

     增删改查

     (1)添加[list addObject:@""];

     (2)直接删除一个元素:[list removeObject:@""];

     通过下标删除元素:[list removeObjectAtIndex:0];

     删除最后一个元素:[list removeLastObject];

     删除全部元素:[list removeAllObjects];

     替换元素:

     通过下标 替换下标对应的元素:[list replaceObjectAtIndex:0 withObject:@""];

     查找元素:

     (1)通过下标:list[0];

     (2)通过内容查找:[list indexOfObject:@""];

    相关文章

      网友评论

        本文标题:OC(三)数组

        本文链接:https://www.haomeiwen.com/subject/qkxtvftx.html