美文网首页
oc基础之数组

oc基础之数组

作者: 解双权 | 来源:发表于2016-10-19 21:38 被阅读0次

    NSArray创建

    NSArray*arr = [[NSArrayalloc]init];

    NSArray*arr = [NSArray arrayWithObject:@"aaa"];

    NSArray*arr = [NSArrayarrayWithObjects:@"aaa",@"bbb",@"ccc",nil];//数组中的nil是结束符

    NSLog(@"%@", arr);

    输出:

    (

    aaa,

    bbb,

    ccc

    )

    简写形式

    NSArray*arr = @[@"aaa",@"bbb",@"ccc"];

    NSLog(@"%@", arr[0]);

    NSArray遍历

    常规遍历

    for(inti = 0; i < arr.count; ++i) {

    NSLog(@"arr[%i] = %@", i, arr[i]);

    }

    使用OC中的增强for循环来遍历

    for(NSString*objinarr) {

    NSLog(@"obj = %@", obj);

    }

    使用OC数组的迭代器来遍历

    [arrenumerateObjectsUsingBlock:^(idobj,NSUIntegeridx,BOOL*stop) {

    if(idx == 1) {

    *stop =YES;

    }

    NSLog(@"obj = %@, idx = %lu", obj, idx);

    }];

    数组排序

    Person*p1 = [Personnew];

    p1.age= 10;

    Person*p2 = [Personnew];

    p2.age= 20;

    Person*p3 = [Personnew];

    p3.age= 5;

    Person*p4 = [Personnew];

    p4.age= 7;

    NSArray*arr = @[p1, p2, p3, p4];

    NSLog(@"排序前: %@", arr);

    //按照人的年龄进行排序

    NSArray*newArr = [arrsortedArrayWithOptions:NSSortStableusingComparator:^NSComparisonResult(Person*obj1,Person*obj2) {

    //每次调用该block都会取出数组中的两个元素给我们

    //二分排序

    returnobj1.age> obj2.age;//该方法默认会按照升序排序

    }];

    NSLog(@"排序后: %@", newArr);

    NSArray文件读写

    将数组写入到一个文件中(如果没有这个文件会生成新的文件)

    注意:writeToFile只能写入数组中保存的元素都是Foundation框架中的类创建的对象,如果保存的是自定义对象那么不能写入

    NSArray*arr = @[@"aaa",@"bbb",@"ccc",@123,@222];

    BOOLflay  = [arrwriteToFile:@"/Users/kobi/Desktop/abc.plist"atomically:YES];

    NSLog(@"flay = %i",flay);

    2.从文件中读取一个数组

    NSArray*newArray = [NSArrayarrayWithContentsOfFile:@"/Users/kobi/Desktop/abc.plist"];

    NSLog(@"%@",newArray);

    可变数组 NSMutableArray 

    增删改查

    //注意:不能通过@[](简写形式)来创建一个可变数组,因为@[]创建出来的是一个不可变的数组

    创建一个空的数组(NSMutableArray只能先创建再赋值)

    NSMutableArray*arrM = [NSMutableArrayarray];

    添加元素

    [arrMaddObject:@"aaa"];

    //将指定数组中的元素都取出来,放到arrM中

    [arrMaddObjectsFromArray:@[@"bbb",@"ccc"]];

    //注意:以下是将整个数组作为一个元素添加

    [arrMaddObject:@[@"aaa",@"jjj"]];

    NSLog(@"%@",arrM);

    //在下标为几的地方插入一个元素

    [arrMinsertObject:@"xsq"atIndex:1];

    //插入一组数据,指定数组需要插入的位置,和插入多少个

    NSRangerange =NSMakeRange(0, 2);

    NSIndexSet*set = [NSIndexSetindexSetWithIndexesInRange:range];

    [arrMinsertObjects:@[@"Ab",@"Cd"]atIndexes:set];

    NSLog(@"%@",arrM);

    删除元素

    [arrM removeObjectAtIndex:0];(删除下标为几的元素)

    //删除最后一个元素

    [arrM removeLastObject];

    //删除全部元素

    [arrM removeAllObjects];

    //删除某个元素

    [arrM removeObject:@"Cd"];

    替换元素(替换下标为几的元素)

    [arrM replaceObjectAtIndex:4 withObject:@"lnj"];

    NSLog(@"%@",arrM);

    替换(简写)

    arrM[0] =@"as";

    NSLog(@"%@",arrM);

    获取元素

    NSLog(@"%@",[arrM objectAtIndex:0]);

    NSLog(@"%@",arrM[1]);

    相关文章

      网友评论

          本文标题:oc基础之数组

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